如何把windows-1257转换成utf-8(mysql)

时间:2011-11-03 09:42:49

标签: mysql encoding utf-8 character-encoding

我正在寻找有关编码问题的帮助我已经在几天之内一直在努力。

我有一个Collat​​ion“latin1_swedish_ci”的数据库。当我查看单个条目时,它会显示混乱的文本

grieþos informçs

应该是

griežos informēs

好的......我尝试用php脚本将文本输出到浏览器并设置

<meta http-equiv="Content-Type" content="text/html; charset=windows-1257" />

现在......它正确显示数据(“griežosinformēs”)。我需要做的是将此数据转换为UTF-8,以便我可以使用

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

并正确显示所有内容。

我尝试使用Notepad2并使用编码windows-1257创建一个文件,然后从数据库中复制文本并保存....同样的问题。

尝试使用utf-8整理在该数据库中创建一个表并在那里插入数据......没有运气 - 只是显示?特殊字符应该在哪里。

任何帮助将不胜感激,

由于

2 个答案:

答案 0 :(得分:1)

SELECT CAST(_cp1257_general_ci'test' AS CHAR CHARACTER SET utf8);

(test是列名)

这将为您提供正确字符集中的行。您应该使用UTF8然后SELECT CAST(....) FROM old_table INTO new_table

创建一个新表

您可能还想将旧表的字符集更改为cp1257_general_ci而不是latin1_swedish_ci。

为了在不丢失数据的情况下执行此操作,首先将列的数据类型更改为blob,然后使用cp1257_general_ci将其更改为varchar,然后最后第三次更改为utf8_unicode_ci(我建议先备份,以防万一。)

答案 1 :(得分:0)

在打开与数据库的连接后立即使用此查询,以便在每次加载页面时运行一次:

    mysql_query('SET NAMES `utf8`');