我的问题:
我得到了一个非英语语言(波斯语或波斯语,如果你不知道那是什么语言,它就像阿拉伯语)的 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
我试过的:
首先,当我MYI
在 Notepad++ 中打开文件并使用“以 UTF-8 编码”时,我可以看到大部分数据以正确的格式(波斯语)保存在那里。
根据我的研究,我尝试了以下方法:
1)更改我看到的任何内容utf8_general_ci
,包括:数据库(mxpro)排序规则(通过操作)、表排序规则(通过操作)、列排序规则和服务器连接排序规则(在常规设置中)
2)将这些服务器变量更改为utf8
:字符集客户端、字符集连接、字符集数据库、字符集结果、字符集服务器和字符集系统。
3)将这些服务器变量更改为utf8_unicode_ci
:排序规则连接、排序规则数据库和排序规则服务器。
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
尽管我努力了,但还没有结果。
先感谢您。