【发布时间】:2012-09-22 13:11:55
【问题描述】:
我有一个包含多个关键字翻译的数据库。
我正在访问这些翻译,并且对于许多法语单词,有些字符不会出现在英语中。例如重音 e。 (我稍后会翻译成其他语言,我相信同样的问题也会出现。)
请记住,这些翻译来自 MySQL 数据库,有什么办法可以解决这个问题吗?我尝试将字符集从 utf-8 更改为 iso 8859-1,但这没有任何区别。
任何指导都会受到热烈欢迎! 谢谢
【问题讨论】:
我有一个包含多个关键字翻译的数据库。
我正在访问这些翻译,并且对于许多法语单词,有些字符不会出现在英语中。例如重音 e。 (我稍后会翻译成其他语言,我相信同样的问题也会出现。)
请记住,这些翻译来自 MySQL 数据库,有什么办法可以解决这个问题吗?我尝试将字符集从 utf-8 更改为 iso 8859-1,但这没有任何区别。
任何指导都会受到热烈欢迎! 谢谢
【问题讨论】:
我会将客户端编码设置为 UTF-8 和数据库排序规则 utf8_bin。 您如何在数据库中准确插入单词?您是自动翻译单词并插入它们还是手动进行。 您还可以将连接排序规则设置为 UTF8。
-------- 更新 -------
要在 PHP 中强制执行字符集连接,只需在连接后添加以下内容:
mysql_query('SET NAMES utf8');
如果它不起作用,请尝试在您的脚本中也将字符集强制为 utf8。
mysql_query('SET CHARACTER SET utf8');
记住要清理所有数据并在修改后重新插入,然后再尝试对数据库进行任何调用。
【讨论】:
通过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。
【讨论】:
ISO 8859-1 实际上在字符集中有一个重音 e。听起来,您的数据库中有 UTF8 字符,但是结果中那些讨厌的外来字符不能很好地变成纯英文字符。您可以使用coallation 执行此操作。将您的结果整理成latin1_swedish_ci 之类的内容。
我相信 vars 中还有一个条目可以设置,这样您就不必在每个查询中指定合并,但我懒得去查找它:p
【讨论】: