我之前从未遇到过此问题,通常是我的数据库或html页面。但现在我认为它是我的PHP。我从csv或文本区域导入文本,并且两种方式都会出错。
例如é更改为é。我使用htmlentities来解决这个问题,但它没有用。 htmlentities函数没有在html中返回é而在html实体中没有返回é,所以它在htmlentities进入之前已经丢失了真正的字符......那么这是否意味着我的php文件有错误的编码或什么?
我希望有人能帮帮我..
谢谢! 克里斯
答案 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)