我使用的是带有最新XmlRpcPlugin的trac 1.0.1。使用python添加工单时,会正确插入非ASCII码字符(本例中为ä):
import xmlrpclib
server = xmlrpclib.ServerProxy('https://user:pwd@localhost/trac/login/xmlrpc')
server.ticket.create("Täst", "Täst")现在我想使用phpxmlrpc添加一个票证,如下所示:
$client = new xmlrpc_client("https://localhost/trac/xmlrpc");
$client->setCredentials("usr", "pwd", CURLAUTH_BASIC);
$xmlrpc_msg = new xmlrpcmsg('ticket.create', array(new xmlrpcval("Täst"), new xmlrpcval("Täst"));
$xmlrpc_resp = $client->send($xmlrpc_msg);我现在得到这个错误:not well-formed (invalid token): line 6, column 57,并且没有插入票证。
将$client->request_charset_encoding设置为UTF-8或ISO-8859-1时,两次都会插入票证,但所有非ascii字符的格式都不正确。
我怎么才能让它正常工作呢?
发布于 2013-08-17 07:47:06
请注意,众所周知,PHP在Unicode字符方面存在问题。another SO question对此进行了更详细的讨论。
在将字符串传递给utf8_encode()函数之前,请尝试使用xmlrpc函数对字符串进行编码。
发布于 2017-11-24 08:20:12
主要的问题是:你的例子是否相关,即。你的源码字符串是作为php源码的一部分保存的,还是从其他地方获得的,比如数据库?
如果它存储在php源文件中,那么在保存该文件时,您应该确保控制文本编辑器使用的字符集:
如果您将php源代码保存为utf8: nothing to do
上调用utf8_encode
完成后,您必须告诉phpxmlrpc库您的应用程序内部使用的字符集是utf8。这不是通过设置$client->request_charset_encoding来实现的,而是通过设置PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding来实现的
https://stackoverflow.com/questions/18033384
复制相似问题