我有一个数据库 - 包含表格文章。
我想将标题和内容字段转换为utf8
现在 - 所有数据都是这样的:פורטל רעל × ×¤×ª×— רשמית!
我希望它成为普通的希伯来字符。
由于
答案 0 :(得分:8)
如果需要转换整个数据库,可以将其作为databaseback.sql
文件备份,然后形成命令行
iconv -f latain -t utf-8 < databaseback.sql > databaseback.utf8.sql
您可以使用http://www.php.net/manual/en/function.iconv.php
如果你没有命令行访问权限,转换php中的每一行
最后不要忘记转换phpmyadmin中每个字段的排序规则,然后你可以轻松地重新安排utf8
更新
如果您有iconv is not recognized
,则表示您没有安装iconv
更简单的解决方案是: 将MySQL数据迁移到Unicode
http://daveyshafik.com/archives/166-migrating-mysql-data-to-unicode.html
答案 1 :(得分:7)
以下MySQL函数将在双重编码后返回正确的utf8字符串:
CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8)
它可以与UPDATE语句一起使用来更正字段:
UPDATE tablename SET field = CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8);
答案 2 :(得分:5)
您可以从此数据库创建mysqldump。然后下载像Notepad ++,open dump file,将其转换为UTF8,然后通过文件将所有编码替换为utf-8,包括第一个SET NAMES运算符。
如果通过phpMyAdmin(使用默认设置)转储到文件,请使用输出文件编码ISO-8859-1而不是UTF-8,如默认情况下所示。
答案 3 :(得分:4)
您可以编写一个执行转换的小脚本。请参阅http://www.php.net/manual/en/function.mb-detect-encoding.php和http://php.net/manual/en/function.mb-convert-encoding.php这就是我这样做的方式。
请记住使用严格模式! http://www.php.net/manual/en/function.mb-detect-encoding.php#102510
在伪代码中它会是......像这样:
str = getDataAsString()
if(!isUTF8(str)) {
str = convert2UTF8(str)
}
saveStr2DB()
答案 4 :(得分:2)
试
ALTER TABLE `tablename` CHANGE `field_name` `field_name` VARCHAR( 200 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL