【问题标题】:Paypal character encoding breaks url stringPaypal 字符编码会破坏 url 字符串
【发布时间】:2013-09-30 12:44:09
【问题描述】:

我在我的 PayPal URL 字符串中传递项目名称,但是一旦我遇到任何具有字符编码的内容,它就会导致 url 字符串在提交到 paypal 时中断。

例如,我要传递以下项目名称:

积极倾听 - 这是一个

我的 paypal url 字符串然后输出为:

https://www.paypal.com/cgi-bin/webscr?item_name_1=Active listening –it’s

你可以看到它隐藏了 - 和 ' 这会导致 url 字符串中断。如果我手动删除 - 和 ' ,它会像往常一样工作。

我已将 paypal 后端中的语言编码设置为 UTF-8,并且在我的 paypal 字符串上传递 UTF-8。

我做错了什么?

【问题讨论】:

  • 仔细阅读 PayPal 手册 - 它说您应该对发送到其服务器的每个值进行 urlencode。
  • 谢谢 Fracsi,我会试一试

标签: php encoding utf-8 paypal paypal-ipn


【解决方案1】:

设法通过使用

转换 html 字符来解决此问题
html_entity_decode('string', ENT_COMPAT, 'UTF-8') 

在将项目名称传递给 PayPal 之前。

【讨论】:

  • 嗨。我可能遇到了与您类似的问题(在这篇文章中:stackoverflow.com/questions/40167842/…)。请问您在哪里以及如何包含您提到的这个 html_entity_decode 行作为您的解决方案?
  • 嗨@Michel,那是很久以前的事了,但据我所知,我在将字符串发送到贝宝之前就包含了它。希望对您有所帮助。
  • 谢谢。我想这意味着你在整个最后的字符串上都做了。一次不只是一个字段。
  • 是的@Michel 我记得的整个字符串。不过那是很久以前的事了,所以我不能 100% 确定。
【解决方案2】:

您可能需要先将它们转换为 UTF8,然后再进行 urlencode。尝试这样做

<?php
echo rawurlencode(utf8_encode($yourvar));

【讨论】:

  • 这确实有效,但现在在贝宝结帐结束时,它们显示为字符编码值,例如。 '–'而不是 -
猜你喜欢
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
  • 2013-08-06
  • 2011-07-10
相关资源
最近更新 更多