gpt4 book ai didi

php - Python xml-rpc 与 PHP 客户端和 unicode 不工作

转载 作者:行者123 更新时间:2023-11-29 13:22:50 25 4
gpt4 key购买 nike

我有用 Python 编写的 XML-RPC 服务器。它获取一些值并将它们保存在 mysql 数据库中。数据采用utf-8格式,整个过程运行良好。

我在使用 Python、ASP.NET 和 C# 等其他语言时没有任何问题,但是当涉及到 PHP 时,就会出现问题。这些字符没有按应有的方式保存在 MySQL 中,它们都是乱码。

我已经完成了所有建议,如在 PHP 文件中设置 header 等。我还将 MySQL 排序规则配置为 utf-8,但问题仍然存在。

使用的Curl来自Github:https://github.com/dongsheng/cURL

源代码如下:

<?php
error_reporting(E_ALL);
header('Content-Type: text/plain; charset=utf-8');

require_once('curl.php');
$rpc = "http://xmlrpc-webservice-address.com/";
$client = new xmlrpc_client($rpc, true);
$text="سلام";
$arr1=array("username", "password", array("111"), $text, "30002240123456", "ws", False);
$resp = $client->call('send', $arr1);
print_r($resp);
print_r("\n");
print_r($text);
?>

最佳答案

您的问题很可能是以下之一(按可能性降序排列):

  • 您的 PHP 源代码实际上并未编码为 UTF-8,而是编码为 CP1256。这意味着对于将其读取为 UTF-8 的 PHP 解释器而言,源代码中的非 ASCII 文字字符串实际上是 mojibake 胡言乱语。这些垃圾字节按原样在整个链中传递 — 到达 XML-RPC 服务并返回,到达浏览器,最后到达用户屏幕。
  • 您的 PHP 源代码编码为 UTF-8,但您的 PHP 解释器认为它是 CP1256,因为它(或您的服务器/模块)的配置方式。因此,文字字符串再次是 mojibake(相反方向),它再次穿过整个链。
  • 您的 Web 服务不返回 UTF-8,但是,例如,Latin-1,并且您的其他客户端都将其相应地视为 Latin-1,但您的 PHP 客户端代码只是假设它是 UTF-8,将其传递给浏览器将其视为 UTF-8,用户看到的是垃圾。
<小时/>

如果您不能绝对确定您的编辑器将源代码保存为 UTF-8,请在十六进制编辑器中查看源文件。如果是 UTF-8,则阿拉伯字符串应类似于 D8 B3 D9 84 D8 A7 D9 85。如果有任何不同,例如 D3 E1 C7 E3 (CP1256) 或 D3 E3 C7 E5 (ISO-8859-6),那就是你的问题了。

关于php - Python xml-rpc 与 PHP 客户端和 unicode 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20556784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com