2010-09-08 50 views
0

我使用谷歌翻译与我的网站翻译短,经常使用的短语。我不是每次都要求Google翻译一次,而是考虑将翻译缓存在MySQL表中。我应该使用什么整理来在表中存储外来字符?

无论如何,它适用于拉丁字符,但对亚洲人等其他人无效。什么整理/ charset将是最好的使用?

而且 - 我已经尝试了默认(latin1_swedish_ci)和utf8_unicode_ci

回答

2

其中之一应该做的伎俩: 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(),或者你使用任何后运行)。

+0

哦,我试过ucs2和utf8,但他们不工作。这可能是PHP或者是丢失了字符的查询,或者它可能不支持我正在测试的异国语言。我想我会将翻译视为二进制数据,并将base64编码为其他内容。 – Matt 2010-09-08 15:38:04

+0

是的,你也需要设置它的连接。我编辑过。 – 2010-09-08 15:38:35

+0

好的,我添加了mysql_query(“SET NAMES'utf8'”)或死(mysql_error());就在我的查询之前,但它不起作用。是否必须在db被选中后才被直接发送,所以在它之前没有其他查询可以运行?我的代码不够简单,不足以让我轻松完成,但如果需要,我可以。 – Matt 2010-09-08 15:47:59

1

排序规则与国际字符无关。 Charset的确如此。
通常的解决方案是utf8。

不知道你是什么意思“我试过utf8_unicode_ci”,但至少你必须告诉数据库,你的数据是什么字符集。 SET NAMES utf8查询可以做到这一点,如果你的谷歌的数据使用该字符集

相关问题