PHP字符编码问题

时间:2009-05-05 17:09:43

标签: php xml utf-8 character-encoding

我需要一个字符编码问题的帮助,我想一劳永逸地排序。以下是我从XML提要中提取的一些内容的示例,插入到我的数据库然后拔出。

正如你看不到的那样,许多特殊的html字符被破坏/破坏。

我怎么能一劳永逸地阻止这个?我如何能够支持所有类型的角色等?

我已经尝试过我能找到的每一段编码,它有时会对其进行大多数修正,但其他代码却已损坏。

8 个答案:

答案 0 :(得分:11)

绝对一劳永逸确保您再也不会遇到编码问题:

在所有地方使用UTF-8!

那就是(如果你使用mysql和php):

  • 例如,将数据库中的所有表格设置为整理“utf8_general_ci”。
  • 建立数据库连接后,运行以下SQL查询:“SET NAMES'utf8'”
  • 始终确保编辑器的设置设置为UTF-8编码。
  • 在HTML文档的部分中包含以下元标记:

    < meta http-equiv =“content-type”content =“text / html; charset = utf-8”>

以及几项奖金提示:

OR:

您可以使用一个简单的服务器端配置文件来处理所有编码内容。在这种情况下,您根本不需要标头和/或元标记或php.ini文件修改。只需将您想要的字符集编码添加到.htaccess文件并将其放入您的www根目录。如果你想摆弄字符集字符串并使用你的PHP代码 - 那就是另一个故事。数据库整理必须是正确的。

脚注:UTF-8不是 编码解决方案的 a 解决方案。只要使用的环境已被考虑,无论使用什么字符集/编码都无关紧要。

答案 1 :(得分:3)

答案 2 :(得分:1)

似乎用ISO 8859-1解释了UTF-8编码的文本。

如果您正在处理XML文档,则必须使用HTTP header field Content-Typecharset参数或XML declarationencoding属性中给出的编码。如果两者都不给出,则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');
}

这两个人救了我,我认为现在正在工作。如果我继续遇到问题,我会回来的。我应该将它存储在数据库中,例如“&”或者作为“&”?