PHP中的字符编码

时间:2011-09-03 13:46:10

标签: php encoding

我之前从未遇到过此问题,通常是我的数据库或html页面。但现在我认为它是我的PHP。我从csv或文本区域导入文本,并且两种方式都会出错。

例如é更改为é。我使用htmlentities来解决这个问题,但它没有用。 htmlentities函数没有在html中返回é而在html实体中没有返回é,所以它在htmlentities进入之前已经丢失了真正的字符......那么这是否意味着我的php文件有错误的编码或什么?

我希望有人能帮帮我..

谢谢! 克里斯

3 个答案:

答案 0 :(得分:2)

文件通常是ISO-8859-1(拉丁文)或UTF-8 ... ISO-8859-1是每个字符1个字节,UTF-8是每个字符1-4个字节。因此,如果您在预期的时候得到2个字符,那么您正在阅读UTF-8并将其显示为ISO-8859-1 ...如果您遇到奇怪的字符,那么您正在阅读ISO-8859-1并将其显示为UTF -8。

如果你提供更多详细信息,那么更容易确定,但简而言之,你有不一致的字符集,需要转换其中一个,所以它们都是一样的。但是从你看来,你在你的项目中使用的是ISO-8859-1,但是你正在从某个地方读取一些UTF-8 ...如果该数据确实应该存储为UTF-8,请使用utf8_decode($ text) ,或找到数据并手动转换。

编辑:如果你在某个地方使用AJAX,那么你总是会从中获得UTF-8,如果你想继续使用ISO-8859-1,你必须自己使用utf8_decode()解码它。

答案 1 :(得分:1)

尝试打开您的php文件并将编码更改为UTF-8

如果没有用,请将其添加到您的php:

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

或者这是你的HTML:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

答案 2 :(得分:0)

看看PHP's iconv()