我需要一个字符编码问题的帮助,我想一劳永逸地排序。以下是我从XML提要中提取的一些内容的示例,插入到我的数据库然后拔出。
正如你看不到的那样,许多特殊的html字符被破坏/破坏。
我怎么能一劳永逸地阻止这个?我如何能够支持所有类型的角色等?
我已经尝试过我能找到的每一段编码,它有时会对其进行大多数修正,但其他代码却已损坏。
答案 0 :(得分:11)
绝对一劳永逸确保您再也不会遇到编码问题:
在所有地方使用UTF-8!
那就是(如果你使用mysql和php):
在HTML文档的部分中包含以下元标记:
< meta http-equiv =“content-type”content =“text / html; charset = utf-8”>
以及几项奖金提示:
OR:
您可以使用一个简单的服务器端配置文件来处理所有编码内容。在这种情况下,您根本不需要标头和/或元标记或php.ini文件修改。只需将您想要的字符集编码添加到.htaccess文件并将其放入您的www根目录。如果你想摆弄字符集字符串并使用你的PHP代码 - 那就是另一个故事。数据库整理必须是正确的。
脚注:UTF-8不是 编码解决方案的 a 解决方案。只要使用的环境已被考虑,无论使用什么字符集/编码都无关紧要。
答案 1 :(得分:3)
我最喜欢的关于JoelOnSoftware编码的文章:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
答案 2 :(得分:1)
似乎用ISO 8859-1解释了UTF-8编码的文本。
如果您正在处理XML文档,则必须使用HTTP header field Content-Type
中charset
参数或XML declaration中encoding
属性中给出的编码。如果两者都不给出,则XML规范将UTF-8或UTF-16声明为default character encoding,您必须使用一些detection。
答案 3 :(得分:1)
看起来您提供的链接包含以utf-8编码的数据。 (按照该链接,然后将浏览器的编码更改为utf-8)。
我听起来你在从数据库中插入和检索时遇到了问题。确保您的数据库表已将utf-8设置为编码。
答案 4 :(得分:1)
连接到数据库之后,但在执行任何事务之前,请执行以下行,以确保所有数据库通信都是UTF-8:
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $dbconn);
答案 5 :(得分:0)
首先,请确保将数据库的字符编码设置为支持UTF-8。其次,PHP的ICONV将成为你的朋友。最后,确保您的响应标头正在发送正确的字符编码(同样,UTF-8)。
答案 6 :(得分:0)
您是否尝试过utf8_encode()
和utf8_decode()
?
您使用哪一个将完全取决于您的数据编码方式,您没有指定,但它们对于这种情况非常有用。
答案 7 :(得分:-1)
header('Content-type: text/html; charset=UTF-8') ;
/**
* Encodes HTML safely for UTF-8. Use instead of htmlentities.
*
* @param string $var
* @return string
*/
function html_encode($var)
{
return htmlentities($var, ENT_QUOTES, 'UTF-8');
}
这两个人救了我,我认为现在正在工作。如果我继续遇到问题,我会回来的。我应该将它存储在数据库中,例如“&”或者作为“&”?