У меня есть скрипт Mac VBA, который отправляет запрос в веб-приложение Ruby Sinatra.
Текст, передаваемый из Excel, содержит такие символы, как é. Ruby (версия 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
Персонаж é выходит на другой конец как Ž.
Похоже, что текст в Excel закодирован как Windows-1252 http://en.wikipedia.org/wiki/Windows-1252.
Представление символа в байтах равно 142 (или Ž в Windows-1252).