2

我的问题:

我得到了一个非英语语言(波斯语或波斯语,如果你不知道那是什么语言,它就像阿拉伯语)的 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

尽管我努力了,但还没有结果。

先感谢您。

4

2 回答 2

0

在 phpMyAdmin wiki 上有一篇文章解释了这个问题:

http://wiki.phpmyadmin.net/pma/Garled_data

于 2013-08-23T14:17:29.110 回答
0

我在我的数据库上使用了这个查询,它工作得很好

ALTER DATABASE yourDB CHARACTER SET utf8 COLLATE utf8_bin

于 2018-06-10T06:24:20.617 回答