【发布时间】:2016-11-01 08:15:02
【问题描述】:
我正在编写一个脚本,但遇到了一些问题。
脚本期望字符串以字节数据的形式传递给它。例如,我有字符串:
61,68,71,61,68,101,118,105,101,116,104
原来是 =DG=Devieth。以下代码采用该行并成功翻译:
$sv_reportee = implode(array_map('chr', explode(',', $_GET['defendant'])));
现在,假设我将该字符串更改为包含 171 («) 和 187 (»)。该脚本没有发出任何警告,没有通知或任何东西......它只是拒绝在使用变量方面做更多的工作。它会很好地运行其他函数,但运行 print($sv_reportee) 会导致该变量完全没有任何结果。
这是我对上述代码行的参考:PHP Get String Text From Bytes
现在,据我了解, chr() 应该能够处理 ASCII 表上的 0-255。对?或者我应该/可以这样做不涉及上述代码行的另一种方式?
值得一提的是,由于应用程序的另一个方面的限制,字符串必须以字节形式发送。不幸的是,没有其他方法可以解决这个问题 - 我们已经用尽了所有其他可能的选择。
【问题讨论】:
-
您好,ASCII 是 0-128,我相信还有什么需要编码的。有类似“扩展 ASCII”here 但整数与您的不匹配(171 == 1/2 而不是引号)。现在您的示例匹配 latin1 - en.wikipedia.org/wiki/ISO/IEC_8859-1。所以我会说尝试this 重新编码为 UTF8...
-
@urban 感谢您的链接 - 使用 utf8_encode() 包围字符串,以及设置标题类型。
标签: php ascii special-characters