字符编码问题和PHP - 这是什么编码?

时间:2010-09-10 00:44:55

标签: php mysql encoding utf-8 character

我的计算机上有一个文件,我希望使用PHP将其复制到MySQL表中。当我打开文件时,内容看起来很好,就像普通文本一样 - 但是,当我尝试使用PHP读取文件或插入MySQL表时,我会得到各种各样的时髦字符。我想也许这是一个utf-8问题,所以我尝试设置标题

header('Content-type: text/html; charset=utf-8');

然后回显file_get_contents()检索到的内容,但这没有任何区别 - 输出仍然很时髦。然后我想也许这是一个cp1252问题,所以我尝试使用htmlentities(),但这也没有帮助:

htmlentities($str, ENT_QUOTES, 'cp1252')

然后我将文件上传到网站(here)。在我'cat'文件的服务器上,它再次看起来正常,但在我打开它的Firefox中,我得到了时髦的角色。这是我的样子截图:screenshot

奇怪的是,我将同一个确切的文件复制到同一服务器上的另一个网站的文件夹中,然而当我在新网址上打开此文件时(请参阅here),Firefox中的相同文件显示不同 - 仍然是一些时髦的字符,但较少。不同外观的屏幕截图:screenshot

有谁知道这里发生了什么,以及如何清理角色?这个文件使用什么字符编码 - 为什么在从服务器上的一个网站复制到另一个网站时,同一个文件在Firefox中看起来有所不同?

2 个答案:

答案 0 :(得分:1)

您的文件是UTF-16;尝试将其用作Firefox中的编码。它看起来更正确,尽管仍有一些流浪的CJK字符,这可能是因为你的某些字符的字节错误。

请记得在提供好答案的所有问题上接受答案; Stack Overflow上的许多人可能无法继续回答您的问题,因为缺乏声誉激励。

答案 1 :(得分:1)

我以前遇到过这个问题。隐藏的字符无法在某些IDE中显示。

我能够通过在记事本中打开文件并复制文本然后删除文件来解决此问题。然后我从头开始创建文件并粘贴在纯文本中。

您不希望使用wordpad等文本复制文本,因为这也会复制隐藏的字符。

编辑:

您可能还想尝试接受以前问题的某些人的答案,因为如果他们知道您将提供声誉,您会得到更多愿意提供帮助的人的回复。