首页 » 建站技术 » DreamHost » 浏览内容

[DreamHost] 解决phpmyadmin 乱码,支持gb2312和utf-8


2006-08-16 10:39:05 9,786 0 发表评论 字体: 作者:C.K.
标签: phpmyadmin教程编码

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

From: http://www.chinahtml.com/programming/2/2006/php-11403984693615.shtml

群里很多PHP爱好者一直受phpmyadmin的乱码问题困扰.我自从有了mysql-front后,我就很少使用phpmyadmin了.但每次连接远程主机,就比较慢.造成操作不便.今天有点时间,就下了最新的版本来研究.

首先说明我的数据库使用情况:

phpmyadmin 版本 2.7.0-pl1  (注:适用于所有版本)
如果你使用其它版本,可能会有所不同
mysql版本MySQL 5.0.11-beta-nt
我在以前是使用GB2312编码方式,直接写入数据库的,字符集是mysql默认的latin1
PHP5以后我写的程序都改用UTF-8编码方式了,也是直接读写的.所以字符集也应试是mysql默认的latin1

我在用PHP操作数据时 没有 使用过以下语句:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

好,开始吧.

********************************************

/**
* Language and charset conversion settings
* phpMyAdmin 2.9.1.1 修改于 2006-12-16
* 配置文件相对地址是:libraries\config.default.php
*/
// Default language to use, if not browser-defined or user-defined
$cfg['DefaultLang'] = 'zh';  //默认为英文'en-iso-8859-1',zh为中文。

// Default connection collation (used for MySQL >= 4.1)
$cfg['DefaultConnectionCollation'] = 'utf8_unicode_ci';

// Force: always use this language – must be defined in
//        libraries/select_lang.lib.php
$cfg['Lang']     = 'zh-utf-8';  //不出现语言选择项,直接使用此处语言。

*******************************************

编辑phpMyAdmin\config.inc.php , 可以配置用户名和密码等信息。
安装后默认的用户名是ROOT和空。
$cfg['Servers'][$i]['user']为用户名
$cfg['Servers'][$i]['password']为密码

把下载的ZIP包解压到www目录后打开文件夹…好久不见,配置文件名都从config.inc.php改成了config.default.php .

我修改了以下代码:

31行

$cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin-2.7.0-pl1/';
注:可以不用修改
45行

$cfg['blowfish_secret'] = 'this';
71行

$cfg['Servers'][$i]['auth_type'] = 'cookie'; // Authentication method (config, http or cookie based)?
接着,浏览器打开http://localhost/phpMyAdmin-2.7.0-pl1/ 使用root登录.language是默认的chinese simplified(zh-utf-8)

浏览一个UTF-8的表.乱码.

查看了html源代码,charset=utf-8

查看他的语言选择文件libraries/select_lang.lib.php

263行 'utf-8'        => 'utf8',

注:不一定是这一行。你要找到
// MySQL charsets map
$mysql_charset_map = array(

………….

然后将它改为 'utf-8'        => 'latin1',

我用的是默认的latin1 所以,这里应试改成latin1.改好保存,刷新.成功

转到一个以前用GB2312编码录入的库.是乱码.

退出.以chinese simplified(zh-gb2312)登录.到处看.乱码.

和上面一样找到libraries/select_lang.lib.php

250行 'gb2312'        => 'gb2312',

把gb2312改为gb2312'        => 'latin1'. 保存,刷新.却不行.还是一样.

很纳闷.查看了html源代码,charset还是utf-8.不对呀,应试是GB2312才正常.

无意中在首页的language下拉菜单中,发现没有登录时的chinese simplified(zh-gb2312)这一栏.(下图)

不解,仔细一对,列表项都是utf-8结束的.问题应试在这.

找libraries/select_lang.lib.php里对应的zh-gb2312,在它后面加上一个”-utf-8″

这回有了.查看了html源代码,charset是GB2312了.

如何在两种语言转换呢?
我试着回到UTF-8编码的表.没错,是乱码.

转到首页.language下拉菜单中选择zh-utf-8.再看看,OK了.

试着修改,添加新数据.都没再有乱码了.

结束:我的思路是以html的charset对照mysql的charset.

最后提醒:

如果你操作表时使用过以下语句:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

那么你修改时libraries/select_lang.lib.php可能会有所不同.多试试几种方式.会有不一样的收获.

再补充一个小技巧: 在左侧目录上直接现实基本信息,对提高工作效率非常有帮助。

其实,PhpMyadmin已经把这个数字取出来了,只是要鼠标放上去才显示,太不方便。改进后对效率没有一点影响,一目了然方便多了。

left.php(phpMyAdmin 根目录) [line:520]

***********************************************************
navigation.php (phpMyAdmin-v2.11.7)
. str_replace(' ', ' ', htmlspecialchars($table['disp_name'])) . '';
echo '

' . “\n”;
***********************************************************

echo ' id=”icon_' . htmlspecialchars( $table_db . '.' . $table['Name'] ) . '”'
.' width=”10″ height=”10″ alt=”' . $GLOBALS['strBrowse'] . '” />' . ” “
.'('.htmlspecialchars( $table['Comment'] ).” “.PMA_formatNumber( $table['Rows'], 0 ).') '.” “;

修改phpmyadmin的默认显示字体
根目录/css下打开phpmyadmin.css.php
下有
PMA_setFontSizes();
由于PMA_setFontSizes()函数(位于libararies/common.lib.php文件中)
根据OS/browser来设定字体大小,均为x-small等名词表示。
所以导致浏览器解析不正常。

我改为下面的
$font_size     = '14px';
$font_biggest  = '18px';
$font_bigger   = '16px';
$font_smaller  = '90%';
$font_smallest = '10pt';

如果字体显示太小,编辑phpMyAdmin\config.inc.php,修改$cfg['TextareaRows']属性就可以改变字体大小。(备用,不推荐)

MYSQL配置(另一个解决方法)

MYSQL 5.0以上的版本,所以默认的字符集为iso-8859-8或latin1, 如果显示中文就会是乱码。所以需要把MYSQL默认编码改为UTF8或者GB2312

解决办法:
1)修改windows\my.ini 文件:
在[client]节里增加 default-character-set=utf8
在[mysqld]里增加    default-character-set=utf8
                            character-set-server = utf8
2) 修改xampp\mysql\bin\my.cnt ,把 default-character-set的参数改为UTF8。
 在WINDOWS下看不到my.cnt文件,只看到一个名字为my的快捷方式。所以需要在纯DOS下改。

第二部很重要,否则默认字符集还是iso-8859-8系列的西欧字符。

网站统计 Statistics

  • 创建时间: 2005年1月3日 距今5041 天
  • 日志总数: 2461
  • 评论总数: 630
  • 标签总数: 654
  • 链接总数: 273
  • 最后更新: 2018-8-31 17:57:04
  • 您是本站第 14063729 位访客

广告区 Guǎng Gào