我将谷歌地理编码的响应存储到我的数据库中。
一个这样的回应在o上有一个重音符号。该镇是林孔。 (我会把重点标记放在这里给你看,但我不知道怎么做。)
当响应存储到我的mySQL数据库中时,它看起来像这样:Rincón
我意识到这与Collation有关,但我对数据库的更改感到紧张,因为我有太多的数据。当前应用于此字段的排序规则是utf8_general_ci。
任何人都可以建议: 1)utf8_general_ci是否是正确的排序规则。 2)我是否需要以某种方式在我的ajax请求中指定此排序规则?
谢谢....
答案 0 :(得分:3)
UTF-8(通常)是世界上任何字符集的“安全”编码。 (并不总是效率最高的,并且有一些论据可以说Unicode代表CJK脚本及其“统一汉”模型,但继续......)
但是,您的界面程序可能无法正确转换为UTF-8或从UTF-8转换。例如,ó=> ³看起来像UTF-8数据(其中一个字符可以分布在不同数量的字节上)正在使用单字节欧洲编码呈现给您,如ISO-8859-15或MS-CP-1451或类似。
您可能正确存储数据,但正确加载。如果您只是使用mysql
终端程序或类似程序,请确保您的终端设置为使用UTF-8(在Unix / Linux系统上,locale
应该以{{.utf8
结尾。 1}},例如我的LANG=en_US.utf8
}
如果您使用GUI工具或类似工具提取数据,请检查其设置/首选项面板中的字符集。
如果您将错误翻译的字符带回到您编写的应用程序中,请查看您的语言设置区域设置的工具。 (也许,INSERT
例程正确,但SELECT
例程有错吗?)
并且,如果要将其发送到Web,请确保您的(XML | HTML | XHTML)文件在适当的位置声明了charset=utf8
,或转换回来从数据库插入文本时,使用iconv
之类的内容从UTF-8到文档的字符集(如果可能)。 (当然,大多数非Unicode字符集只能代表Unicode的一个子集;例如,ISO-8859-15集在覆盖欧洲语言方面做得不错,但不支持西里尔语,阿拉伯语或CJK书写系统,所以可能无法翻译字符。)在Perl中,您可以使用open
的传递参数或使用binmode
在“文件句柄”流上设置透明字符集转换层。