我需要帮助解决一个字符编码问题,想要一劳永逸地解决。以下是我从XML源中提取并插入到数据库中的一些内容示例。
正如你所看不到的那样,许多特殊的HTML字符会被破坏/损坏。
我应该如何才能彻底解决这个问题?我如何支持所有类型的字符等等?
我已经尝试了几乎所有可用的编码方法,有时候可以修复大部分问题,但仍有一些字符被破坏。
我需要帮助解决一个字符编码问题,想要一劳永逸地解决。以下是我从XML源中提取并插入到数据库中的一些内容示例。
正如你所看不到的那样,许多特殊的HTML字符会被破坏/损坏。
我应该如何才能彻底解决这个问题?我如何支持所有类型的字符等等?
我已经尝试了几乎所有可用的编码方法,有时候可以修复大部分问题,但仍有一些字符被破坏。
要彻底解决编码问题,请在所有地方和所有东西上使用UTF-8编码!
如果您使用mysql和php:
在HTML文档的部分中添加以下元标记:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
另外几个提示:
或者:
您可以使用一个简单的服务器端配置文件来处理所有编码问题。在这种情况下,您将不需要头文件和/或元标记,也不需要修改php.ini文件。只需将所需的字符集编码添加到.htaccess文件并将其放入www根目录即可。如果您想要挑战使用PHP代码操作字符集字符串 - 那就是另一回事了。当然,数据库排序规则必须正确。
注:UTF-8不是解决编码问题的唯一方法,它只是一种解决方案。无论使用什么字符集/编码,只要考虑到所使用的环境即可。
这是我最喜欢的一篇关于编码的文章,来自JoelOnSoftware:绝对最小限度的Unicode和字符集知识,每个软件开发人员都必须知道
看起来UTF-8编码的文本被解释为ISO 8859-1。
如果您正在处理XML文档,则必须使用HTTP标头字段Content-Type
中的charset
参数或XML声明中的encoding
属性中给出的编码。如果两者都没有给出,则XML规范将UTF-8或UTF-16声明为默认字符编码,并且您必须使用一些检测。
看起来你提供的链接中有使用 UTF-8 编码的数据。(请点击该链接,然后将你的浏览器编码设置为 UTF-8)。
看起来你在插入和检索数据库方面存在问题。请确保你的数据库表已设置为 UTF-8 编码。
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');
}
这两个人救了我,现在我认为它已经工作了。如果我继续遇到问题,我会回来的。我应该将其存储在数据库中,例如作为"&"还是"&"?
htmlspecialchars
即可。 - Gumbo