我的问题:
我得到了一个非英语语言的mysql数据库(波斯语或波斯语,如果你不知道那种语言是什么,就像阿拉伯语一样)。记录是通过php使用Windows机器通过Web界面输入的。当我想在xampp中使用phpMyAdmin查看数据库时,记录如下所示:
Ù...رکزآÙ...ÙزØ'تÙپخانه††Ø²Ø§Ø¬Ø§
如果我在phpMyAdmin中编辑记录,我可以添加非英语(波斯语)字符,它们看起来很好,只显示现有数据。
我也获得了.sql
备份文件,但是当我在Notepad ++中打开它时,它看起来也不正确。我也在Notepad ++中尝试过“在UTF-8中编码”,但没有用。
我想要的是什么:
phpMyAdmin中的正确表示或健康的.sql文件。
我有什么:
xampp 1.8.2(Apache 2.4.4,MySQL 5.5.32,PHP 5.4.16,phpMyAdmin 4.0.4),win 7 x64
我拥有的文件:
.frm .MYD .MYI
个文件(我已复制到xampp\mysql\data\mxpro
),我提到的.sql
文件(mxpro.sql
)&包含以下两行的db.opt
文件:
default-character-set=utf8
default-collation=utf8_general_ci
我发现此行包含在.sql
文件中:
CHARSET=latin1
所有这些文件都位于mxpro
中名为“xampp\mysql\data\
”的文件夹中。
phpMyAdmin中表格列的排序规则为:latin1_swedish_ci
我尝试了什么:
首先,当我在Notepad ++中打开MYI
文件并使用“UTF-8中的编码”时,我可以看到大多数数据都以正确的格式(波斯语)。
我根据我的研究尝试了以下内容:
1)将我看到的任何内容更改为utf8_general_ci
,包括:数据库(mxpro)整理(通过操作),表格整理(通过操作),列整理&服务器连接整理(在一般设置中)
2)将这些服务器变量更改为utf8
:字符集客户端,字符集连接,字符集数据库,字符集结果,字符集服务器&字符集系统。
3)将这些服务器变量更改为utf8_unicode_ci
:collation connection,collation database&整理服务器。
4)添加以下行:
@MySQL_Query("SET NAMES utf8");
在此行之后到xampp \ php \ pear \ MDB2 \ Driver \ mysql.php:
$connection = @call_user_func_array($connect_function, $params);
5)将这3行添加到my.ini:
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
6)添加以下两行:
mysqli_query($link, "SET SESSION CHARACTER_SET_RESULTS =latin1;");
mysqli_query($link, "SET SESSION CHARACTER_SET_CLIENT =latin1;");
到xampp \ phpMyAdmin \ libraries \ dbi \ mysql.dbi.lib.php,位于以下行:
PMA_DBI_postConnect($link, $is_controluser);
7)改变这个:
'utf-8' => 'utf8',
到此:
'utf-8' => 'latin1',
在xampp \ phpMyAdmin \ libraries \ select_lang.lib.php
中尽管我付出了努力,但还没有结果。
提前谢谢。
答案 0 :(得分:0)
在phpMyAdmin wiki上,有一篇文章解释了这个问题:
答案 1 :(得分:0)
我在我的数据库中使用了这个查询,它运行得很好
ALTER DATABASE yourDB CHARACTER SET utf8 COLLATE utf8_bin