任何人都足以在Excel 2011,Ruby 1.9.2/Sintra和字符编码中处理VBA吗?解释来自Mac Excel 2011的Sinatra中的非拉丁字符
我有一个Mac VBA脚本向Ruby Sinatra Web应用程序发出请求。我从Excel传递的文本包含字符,如é。不幸的是,红宝石(版本1.9.2)在这些字符上凄惨地窒息,因为Excel不会以UTF-8格式发送它们。
# encoding: utf-8
require 'rubygems'
require 'sinatra'
require "sinatra/reloader" if development?
configure do
class << Sinatra::Base
def options(path, opts={}, &block)
route 'OPTIONS', path, opts, &block
end
end
Sinatra::Delegator.delegate :options
end
options '/' do
response.headers["Access-Control-Allow-Origin"] = "*"
response.headers["Access-Control-Allow-Methods"] = "POST"
halt 200
end
post '/fetch' do
chars = []
params['excel_input'].valid_encoding? #returns false
params['excel_input']
end
而我的Excel VBA如下:
Sub FetchAddress()
For Each oDest In Selection
With ActiveSheet.QueryTables.Add(Connection:="URL;http://localhost:4567/fetch", Destination:=oDest)
.PostText = "excel_input=" & oDest.Offset(0, -1).Value
.RefreshStyle = xlOverwriteCells
.SaveData = True
.Refresh
End With
Next
End Sub
字符E出来的另一端为z。
SNIP 它看起来像Excel中的文本编码为窗口1252 http://en.wikipedia.org/wiki/Windows-1252 END SNIP
它看起来像红宝石认为,文字是windows 1252,因此Ž的打印。
该字符的字节表示是142(或在Windows-1252中)。问题是我不知道首先从Excel发送给我的编码。
它不喜欢它。我认为问题在于进入的文本不是windows-1252 ......我不知道它是以什么编码进来的。 – ewalk 2011-05-03 11:57:59
上面代码中的两个问题:1. UTF8应该是UTF-8 2.参数的顺序应该是TO,FROM。 – ewalk 2011-05-03 13:11:46
这足够接近我让我需要的东西。我发现输入的内容是MACROMAN。唉,我仍然无法正确打印回Excel。 – ewalk 2011-05-03 13:24:23