【问题标题】:foreign letters appearing出现外文字母
【发布时间】:2012-09-22 13:11:55
【问题描述】:

我有一个包含多个关键字翻译的数据库。

我正在访问这些翻译,并且对于许多法语单词,有些字符不会出现在英语中。例如重音 e。 (我稍后会翻译成其他语言,我相信同样的问题也会出现。)

请记住,这些翻译来自 MySQL 数据库,有什么办法可以解决这个问题吗?我尝试将字符集从 utf-8 更改为 iso 8859-1,但这没有任何区别。

任何指导都会受到热烈欢迎! 谢谢

【问题讨论】:

    标签: mysql character-encoding


    【解决方案1】:

    我会将客户端编码设置为 UTF-8 和数据库排序规则 utf8_bin。 您如何在数据库中准确插入单词?您是自动翻译单词并插入它们还是手动进行。 您还可以将连接排序规则设置为 UTF8。

    -------- 更新 -------

    要在 PHP 中强制执行字符集连接,只需在连接后添加以下内容:

    mysql_query('SET NAMES utf8');
    

    如果它不起作用,请尝试在您的脚本中也将字符集强制为 utf8。

    mysql_query('SET CHARACTER SET utf8');
    

    记住要清理所有数据并在修改后重新插入,然后再尝试对数据库进行任何调用。

    【讨论】:

    • 嗨,谢谢。我用正确的口音手工插入它们。它们在数据库中显示正常。我已经按照你的建议做了。例如,重音 Es 仍然显示为内部带有问号的菱形。此外,使用 utf8_bin,数据库条目会变成一串数字和字母。
    • 如果您将数据库从一种排序规则转换为另一种排序规则,您将无法读取数据,您只会得到混乱的符号。有一些转换技术用来做这并不总是 100% 好用。您应该做的是使用正确的排序规则创建数据库,然后插入数据。确保您为客户端使用了正确的 utf-8 编码。您的 my.ini 对 default-character-set、character_set_server 和 default-collat​​ion 的设置是什么?看看上面的更新。
    • 你好。非常感谢你。更新建议很有效。不过,我将尝试使用不同的字符集。目前, strtoupper() 的使用不适用于当前集合。 é 不会变成 É,而是保持为 é。非常感谢你的帮助。我的默认字符集看起来好像是 ISO-8859-1。
    【解决方案2】:

    通过http://msdn.microsoft.com/en-us/library/ms186939.aspx,我会这么说

    VARCHAR(n) CHARSET ucs2 是最接近的等价物。但我没有看到很多人使用这个,更多的人使用:

    VARCHAR(n) CHARSET utf8 据我所知,utf8 和 ucs2 两个字符集都允许使用相同的字符,只是编码不同。所以任何一个都应该工作,我可能会选择后者,因为它使用得更频繁。

    MySQL 的 unicode 支持存在一些限制,这些限制可能适用于您的用例,也可能不适用于您的用例。有关 MySQL 的 unicode 支持的更多信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html

    复制自:mysql equivalent data types

    【讨论】:

    • 这并不重要,您可以在任何类型的字段中存储任何符号。重要的是排序规则以及单词如何进入数据库。它们可能使用与 utf8 不同的编码来编码。
    【解决方案3】:

    ISO 8859-1 实际上在字符集中有一个重音 e。听起来,您的数据库中有 UTF8 字符,但是结果中那些讨厌的外来字符不能很好地变成纯英文字符。您可以使用coallation 执行此操作。将您的结果整理成latin1_swedish_ci 之类的内容。

    我相信 vars 中还有一个条目可以设置,这样您就不必在每个查询中指定合并,但我懒得去查找它:p

    【讨论】:

    • 我有一个表,其中包含一组关键字,以及一组在几种语言中对应的单词,当我选择法语作为语言时,重音 Es 显示为带有问号的旧菱形。所以我确实想要口音。我知道它们包含在 8859 字符集中,所以认为它们仍然没有正确显示很奇怪:S
    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    相关资源
    最近更新 更多