具有特殊字符的mysql编码问题

时间:2009-07-13 15:54:31

标签: mysql encoding

我注意到我的Rails应用程序返回代替双引号和某些破折号,它返回一个问号字符 -

有没有办法更新表并用原始字符替换它们?

谢谢!

阿米

3 个答案:

答案 0 :(得分:1)

那些将是“智能引号”和em-或en-dashes(“”“ - - - )。 Microsoft应用程序倾向于使用它们代替完美的ASCII等价物,引号,撇号和连字符。他们还将文本保存为windows-1252,这是ISO-8859-1字符编码的Microsoft扩展,其中包括用于代替128..159范围内(通常无用的)控制字符的那些花哨字符的映射。

所以当你应该使用windows-1252时,当前的问题是你将文本解码为ISO-8859-1或UTF-8甚至ASCII(或让系统默认为其中一种编码)。有关真实问题的更多背景信息,请使用google“demoronizer”或“ASCII Dammit”。

答案 1 :(得分:1)

这些问号表示结果显示在环境编码中的无效字节。

目前大多数环境都是utf-8。

如果您运行mysql控制台应用程序,请在第一次连接时运行以下命令,告诉MySQL服务器返回utf-8中当前连接的所有结果:

  SET NAMES utf8;

在rails中,当ActiveRecord通过将“encoding:utf8”添加到database.yml文件来打开数据库连接时,可以运行此命令。您还应确保您的网络服务器(apahce / nginx / etc)正在发送utf-8 HTTP标头,并确保您的HTML文件具有Content-Type元标记。

您的数据库中可能存在损坏的字节,这无济于事。如果是这样的话,你可以尝试清理它的世界:)

答案 2 :(得分:0)

update [table_name] set [field_name] = 
replace([field_name],'[string_to_find]','[string_to_replace]');

应该做的伎俩。始终首先针对测试数据库运行,直到您知道它不会破坏任何内容。

使用此声明需要您自担风险。