亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1592 | 回復(fù): 0
打印 上一主題 下一主題

MySQL 中文顯示亂碼 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-12-23 03:11 |只看該作者 |倒序瀏覽
From:http://blog.csdn.net/dotfun/article/details/4087955
分類: MySQL 52656人閱讀 評論(38) 收藏 舉報

最近關(guān)于中文顯示亂碼的貼子比較多,所以也做了個總結(jié):

可以參考一下楊濤濤版主的《各種亂碼問題匯總》
http://topic.csdn.net/u/20071124/08/3b7eae69-ed1d-4a77-8895-9930bf3601af.html

MySQL字符集的原理介紹。摘錄于官方文檔。http://dev.mysql.com/doc/refman/5.1/zh/charset.html

不同的編碼格式會導(dǎo)致同一字符,在不同字符集下的編碼會不同。同樣同一編碼在不同的字符集中代碼的字符也不相同。當(dāng)你的MySQL返回的字符串的編 碼格式(字符集)與你的客戶工具程序(mysql, php, query browser, ...)當(dāng)前使用的字符集不同時,就會造成亂碼。 比如一個英國朋友告訴你Long, 當(dāng)一位中國小學(xué)生看到后就會告訴你“龍”而不是“長”

關(guān)于字符集的詳細(xì)介紹和例子,建議花一點時間看一下
http://dev.mysql.com/doc/refman/5.1/zh/charset.html  (第10章:字符集支持)。


這里僅摘要一下。

MySQL中默認(rèn)字符集的設(shè)置有四級:服務(wù)器級,數(shù)據(jù)庫級,表級 。最終是字段級 的字符集設(shè)置。注意前三種均為默認(rèn)設(shè)置,并不代碼你的字段最終會使用這個字符集設(shè)置。所以我們建議要用show create table table ; 或show full fields from tableName; 來檢查當(dāng)前表中字段的字符集設(shè)置。

MySQL中關(guān)于連接環(huán)境的字符集設(shè)置有  Client端,connection, results 通過這些參數(shù),MySQL就知道你的客戶端工具用的是什么字符集,結(jié)果集應(yīng)該是什么字符集。這樣MySQL就會做必要的翻譯,一旦這些參數(shù)有誤,自然會導(dǎo) 致字符串在轉(zhuǎn)輸過程中的轉(zhuǎn)換錯誤。基本上99%的亂碼由些造成。

亂碼后需要檢查的信息。(如果需要論壇上的朋友幫助,建議你提供以下信息 )


1. 數(shù)據(jù)庫表中字段的字符集設(shè)置 。show create table TableName show full columns from tableName


mysql> show create table t1;
+-------+------------------------------------
| Table | Create Table                      
+-------+------------------------------------
| t1    | CREATE TABLE `t1` (
  `id` int(11) NOT NULL,
  `c1` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)   
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-------+------------------------------------
1 row in set (0.00 sec)
                       
mysql> show full columns from t1;
+-------+-------------+----------------+------+-----+-
| Field | Type        | Collation      | Null | Key |
+-------+-------------+----------------+------+-----+-
| id    | int(11)     | NULL           | NO   | PRI |
| c1    | varchar(30) | gbk_chinese_ci | YES  |     |
+-------+-------------+----------------+------+-----+-
2 rows in set (0.00 sec)

mysql>

 

2. 當(dāng)前聯(lián)接系統(tǒng)參數(shù)  show variables like 'char%'


mysql> show variables like 'char%';
+--------------------------+----------------
| Variable_name            | Value
+--------------------------+----------------
| character_set_client     | gbk
| character_set_connection | gbk
| character_set_database   | latin1
| character_set_filesystem | binary
| character_set_results    | gbk
| character_set_server     | latin1
| character_set_system     | utf8
| character_sets_dir       | C:/Program File
+--------------------------+----------------
8 rows in set (0.00 sec)

mysql>


1. 中文,請確保 表中該字段的字符集為中文兼容:
 big5     | Big5 Traditional Chinese
 gb2312   | GB2312 Simplified Chinese
 gbk      | GBK Simplified Chinese
 utf8     | UTF-8 Unicode

 

2. 確保,聯(lián)接參數(shù)與這個字段字符集一致,你可以用 set name 'charsetname';
 比如, set name 'gbk';
 這條命令會同時修改 character_set_client,character_set_connection,character_set_results
 (如果你的這架MySQL中都為中文,則你可以在my.ini或my.cnf中加上或修改這個參數(shù), 參數(shù)文件修改后需重啟MySQL服務(wù))
[mysql]
default-character-set=gbk

 

3. PHP 亂碼, 同樣 mysql_query("set name 'gbk'"); 其它API也類似。

 

4. phpmyadmin里亂碼
phpMyAdmin的config.inc.php中有沒有設(shè)置$cfg['DefaultCharset']='utf-8';

 

5. Windows操作系統(tǒng)中命令行("DOS"窗口)下。
 在你的DOS窗中的左上角標(biāo)題欄片左鍵,屬性,
 在字體中,選擇“宋體”,確認(rèn)
 mysql中 set names 'gbk';

 

6. ADO.NET, ADO中 ,可以連接字符串中加入CharSet=UTF8;類似指令以說明connection的字符集。
 Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=UTF8;

 

7. SQL Manager for MySQL

用EMS建數(shù)據(jù)庫,

 Character Set設(shè)為utf-8

 client charset設(shè)UTF-8

 Font charset 設(shè)為GB2312_CHARSET


8. jdbcodbc橋接 http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/bridge.html

       // Load the JDBC-ODBC bridge driver
       Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) ;

      
// setup the properties
       java.util.Properties prop = new java.util.Properties();
       prop.put(
" charSet " , " Big5 " );
       prop.put(
" user " , username);
       prop.put(
" password " , password);

      
// Connect to the database
       con = DriverManager.getConnection(url, prop);

 

9.  PHP 5.2 版本以上解決亂碼問題的一個方法 (由 ljf_ljf [Mark Liang] 提供)

    $conn = mysql_connect ( " 192.168.1.133 " , " root " , " 123456 " ) or
       
die ( " Could not connect: " . mysql_error ());

   
$program_char = " utf8 " ;

   
$conn . mysql_select_db ( " test " );
   
// $conn.mysql_query('SET @@character_set_results = "'.$program_char.'"');
   
    mysql_set_charset(
$program_char , $conn );
   
$charset = mysql_client_encoding ( $conn );
   
printf ( " current character set is %s
" , $charset );
   
$result = mysql_query ( " SELECT id, task_no,pack_path FROM tb_workplan where id = 1 " , $conn );
   
while ( $row = mysql_fetch_array ( $result , MYSQL_BOTH)) {
       
printf ( " ID: %s
task_no: %s 
pack_path :%s <BR>
" , $row [ " id " ] , $row [ 1 ] , $row [ " pack_path " ]); 
    }
   
$conn . mysql_free_result ( $result );
   
$conn . mysql_close ();

 

9.  存儲過程參數(shù)亂碼

create procedure t ( aa char(10) charset 'gbk')

未完。。。

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP