1

I have a problem while writing non ASCII codes to a file with PHP.

For example when I press ALT + 20 on my keyboard I get a ¶ character.

But when I write chr(20) to a file and after opening the file via Notepad++ it reads a DC4 or if I try to write it as a .csv and then open it with excel I get a ? surrounded by a square.

4

2 回答 2

3

您主要误解了操作系统的某个功能。正如评论所说,按下键盘组合(ALT+ numpad 20)不会输入 US-ASCII 字符十进制 20。从操作系统的文档中:

如果您键入的第一个数字是 1 到 9 之间的任何数字,则该值将被识别为系统 OEM 代码页中的代码点。结果因控制面板的区域和语言选项中指定的 Windows 系统语言而异。例如,如果您的系统语言是英语(美国),代码页是 437(MS-DOS 拉丁语美国),所以按 ALT 然后在数字键盘上输入 163 会生成 ú (U+00FA,拉丁小写字母 U,带有锐角)。如果您的系统语言是希腊语(OEM 代码页 737 MS-DOS 希腊语),则相同的序列会产生希腊小写字母 MU (U+03BC)。

根据您的描述,您有OEM 437 Wikipedia Code page 437,因此您要查找的代码点是Pilcrow Wikipedia,在 Unicode 中,这是Unicode Character 'PILCROW SIGN' (U+00B6)

因此,无论您想在哪里输出,都需要找出所需的目标文件字符编码并以正确的编码对该字符进行编码,仅此而已。没有更多的魔法,什么都没有。

于 2013-08-20T10:06:21.963 回答
0

正如 Jeff 所说,控制字符(ASCII 码 < 32)的解释总是不同的。要显示段落符号,请尝试发送chr(182)utf8_encode(chr(182)),具体取决于目标文件的字符集。

于 2013-08-20T09:55:58.503 回答