我使用谷歌翻译与我的网站翻译短,经常使用的短语。我不是每次都要求Google翻译一次,而是考虑将翻译缓存在MySQL表中。我应该使用什么整理来在表中存储外来字符?
无论如何,它适用于拉丁字符,但对亚洲人等其他人无效。什么整理/ charset将是最好的使用?
而且 - 我已经尝试了默认(latin1_swedish_ci
)和utf8_unicode_ci
我使用谷歌翻译与我的网站翻译短,经常使用的短语。我不是每次都要求Google翻译一次,而是考虑将翻译缓存在MySQL表中。我应该使用什么整理来在表中存储外来字符?
无论如何,它适用于拉丁字符,但对亚洲人等其他人无效。什么整理/ charset将是最好的使用?
而且 - 我已经尝试了默认(latin1_swedish_ci
)和utf8_unicode_ci
其中之一应该做的伎俩: http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html
此外,作为MySQL的文档中看到:
客户端应用程序需要 与服务器通信使用 Unicode应设置客户端 字符集accordin甘氨酸;为 示例,通过发出
SET NAMES 'utf8'
声明。
所以,如果你选择utf8_unicode_ci
编码,则需要执行SET NAMES 'utf8'
查询每一个连接到你的数据库(mysql_select_db(),或者你使用任何后运行)。
排序规则与国际字符无关。 Charset的确如此。
通常的解决方案是utf8。
不知道你是什么意思“我试过utf8_unicode_ci”,但至少你必须告诉数据库,你的数据是什么字符集。 SET NAMES utf8
查询可以做到这一点,如果你的谷歌的数据使用该字符集
哦,我试过ucs2和utf8,但他们不工作。这可能是PHP或者是丢失了字符的查询,或者它可能不支持我正在测试的异国语言。我想我会将翻译视为二进制数据,并将base64编码为其他内容。 – Matt 2010-09-08 15:38:04
是的,你也需要设置它的连接。我编辑过。 – 2010-09-08 15:38:35
好的,我添加了mysql_query(“SET NAMES'utf8'”)或死(mysql_error());就在我的查询之前,但它不起作用。是否必须在db被选中后才被直接发送,所以在它之前没有其他查询可以运行?我的代码不够简单,不足以让我轻松完成,但如果需要,我可以。 – Matt 2010-09-08 15:47:59