将非ASCII代码输出到文件

时间:2013-08-20 09:46:52

标签: php windows character-encoding

使用PHP将非ASCII代码写入文件时遇到问题。

例如,当我在键盘上按 ALT + 2 0 时,我会得到一个¶字符。

但是当我将chr(20)写入文件并通过Notepad ++打开文件后,它会读取DC4,或者如果我尝试将其写为.csv然后用excel打开它我会得到一个?被广场包围。

2 个答案:

答案 0 :(得分:3)

您主要误解了操作系统的功能。如注释键盘组合( ALT + 小键盘 2 0 )不输入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)

因此,无论您希望输出哪个,您都需要找到所需的目标文件字符编码,并使用正确的编码对该字符进行编码,这就是全部。没有更多的魔力,没有。

答案 1 :(得分:0)

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