Php 参数中的PayPal IPN API和Unicode符号
我在API方面遇到了一个奇怪的问题。我在我的网站上设置了一个PHP脚本来处理客户付款。每次为我的服务付款时,PayPal IPN都会调用该脚本。反过来,脚本使用PayPal提供的信息为客户发送注册电子邮件 这很好,除非PayPal用户名不是英文的。如此付款(我的PayPal页面截图),中文名称为: 以下内容摘自PayPal IPN生成的请求的PayPal的“”(实际ID被编辑掉): 处理该名称的PHP脚本如下: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
$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
作为char0x1A
传递,而charset
作为windows-1252
传递。有趣的是,如果我用相同的名字在他们的账户上运行,它似乎工作得很好。你是否尝试在你的PayPal账户中将编码格式更改为Utf-8@Eshan:不,我没有。但当我刚刚检查时,它没有UTF-8选项。它只是给了我一个语言列表,这是毫无意义的,因为我无法预测付款可能来自哪个国家。我遗漏了什么吗?你知道,快速跟进。如果单击上面建议的页面中的“更多选项”,则有一种方法可以选择UTF-8编码。尽管这样做了,第一个建议的选项仍然没有改变。那么我们来看看是否能做到。我无法测试它,直到我真正从国外获得付款:)