Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 参数中的PayPal IPN API和Unicode符号_Php_Unicode_Paypal_Paypal Ipn - Fatal编程技术网

Php 参数中的PayPal IPN API和Unicode符号

Php 参数中的PayPal IPN API和Unicode符号,php,unicode,paypal,paypal-ipn,Php,Unicode,Paypal,Paypal Ipn,我在API方面遇到了一个奇怪的问题。我在我的网站上设置了一个PHP脚本来处理客户付款。每次为我的服务付款时,PayPal IPN都会调用该脚本。反过来,脚本使用PayPal提供的信息为客户发送注册电子邮件 这很好,除非PayPal用户名不是英文的。如此付款(我的PayPal页面截图),中文名称为: 以下内容摘自PayPal IPN生成的请求的PayPal的“”(实际ID被编辑掉): 处理该名称的PHP脚本如下: $encoding_2_use = "utf-8"; $encoding_used

我在API方面遇到了一个奇怪的问题。我在我的网站上设置了一个PHP脚本来处理客户付款。每次为我的服务付款时,PayPal IPN都会调用该脚本。反过来,脚本使用PayPal提供的信息为客户发送注册电子邮件

这很好,除非PayPal用户名不是英文的。如此付款(我的PayPal页面截图),中文名称为:

以下内容摘自PayPal IPN生成的请求的PayPal的“”(实际ID被编辑掉):

处理该名称的PHP脚本如下:

$encoding_2_use = "utf-8";
$encoding_used = $_REQUEST['charset'];
$FirstName = mb_convert_encoding($_REQUEST['first_name'], $encoding_2_use, $encoding_used);
$LastName = mb_convert_encoding($_REQUEST['last_name'], $encoding_2_use, $encoding_used);

//Then I use $FirstName and $LastName to make up registration for the customer.

//And to compose an email
$msg = "Hello $FirstName $LastName:";
但我从这个中文名字中得到的是:

$encoding_2_use = "utf-8";
$encoding_used = $_REQUEST['charset'];
$FirstName = mb_convert_encoding($_REQUEST['first_name'], $encoding_2_use, $encoding_used);
$LastName = mb_convert_encoding($_REQUEST['last_name'], $encoding_2_use, $encoding_used);

//Then I use $FirstName and $LastName to make up registration for the customer.

//And to compose an email
$msg = "Hello $FirstName $LastName:";
您好:

或者,如果您通过十六进制编辑器打开它,我可以看到:

0x1A
字符,而不是中文名称的这两部分


你知道如何解决这个问题吗?

既然你在谈论这个特殊的案例,那么你能打印出
$\u REQUEST['first\u name']
$\u REQUEST['last\u name']
$encoding\u使用的值吗?
@NonymousNT:因为这个请求来自PayPal IPN,我显然无法重新创建它。在这一点上,我所拥有的是我在上面发布的历史数据。从中我们可以假设
first\u name
作为char
0x1A
传递,而
charset
作为
windows-1252
传递。有趣的是,如果我用相同的名字在他们的账户上运行,它似乎工作得很好。你是否尝试在你的PayPal账户中将编码格式更改为Utf-8@Eshan:不,我没有。但当我刚刚检查时,它没有UTF-8选项。它只是给了我一个语言列表,这是毫无意义的,因为我无法预测付款可能来自哪个国家。我遗漏了什么吗?你知道,快速跟进。如果单击上面建议的页面中的“更多选项”,则有一种方法可以选择UTF-8编码。尽管这样做了,第一个建议的选项仍然没有改变。那么我们来看看是否能做到。我无法测试它,直到我真正从国外获得付款:)