0

由于我无法控制的原因,我不得不使用 XML-RPC 接口。我的客户端是 Ruby,服务器是 PHP。我的问题是消息中的任何“特殊”字符都会在此过程中被更改。

例如,这是我可能在 Ruby 中进行的调用:

server   = XMLRPC::Client.new2('http://mysite.com/path/to/server/')
response = server.call('postTopic', {
  :topic_title  => "Tsígö"
})

注意参数中的两个特殊字符:topic_title

当它到达服务器时,该日志显示如下:

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
   <methodName>postTopic</methodName>
   <params>
      <param>
         <value>
            <struct>
               <member>
                  <name>topic_title</name>
                  <value>
                     <string>Tsígö</string>
                  </value>
               </member>
            </struct>
         </value>
      </param>
   </params>
</methodCall>
4

2 回答 2

1

我相信我找到了问题所在,这要感谢 mu 对我原来帖子的评论。

IP.Board 的 XMLRPC 服务器正确地接收了 UTF-8 数据,但它没有在前端正确显示。问题在于 IP.Board 配置设置,“服务器环境”中的“字符编码”,由于某种原因,设置为 ISO-8859-1 而不是 UTF-8。将值更改为 UTF-8 修复了显示问题。

于 2011-03-12T23:41:08.517 回答
1

"Tsà gö" 是 "Tsígö" 解释为 ISO-8859-1 (AKA Latin-1) 编码字符串。那么,服务器实际上是 UTF-8 感知的,还是盲目地将所有内容视为 Latin-1,尽管指定了编码?

于 2011-03-12T23:41:43.693 回答