軟件測試之編程亂碼問(wèn)題初步探索[1] 軟件測試工具
關(guān)鍵字:亂碼亂碼的問(wèn)題分為很多種,很多人一見(jiàn)到有亂碼就開(kāi)始罵mysql,其實(shí)很多情況下并不是mysql造成的。
從亂碼產(chǎn)生的原因來(lái)分析,亂碼的產(chǎn)生一般有以下幾種情況。
1、網(wǎng)頁(yè)編碼與程序編碼不一致的問(wèn)題
所謂的網(wǎng)頁(yè)編碼問(wèn)題就是指你的html代碼中定義的“charset”,例如以下這段代碼:
<head>
<title>Chat Tutorial Application</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="language" content="en" />
<meta name="author" content="Padraic Brady" />
<link rel="stylesheet" href="public/styles/chat.css" type="text/css" />
<script src="public/javascript/scriptaculous/lib/prototype.js"
type="text/javascript"></script>
<script src="public/javascript/scriptaculous/src/scriptaculous.js"
type="text/javascript"></script>
<script src="javascript/chat.js" type="text/javascript"></script>
</head>
他設置了瀏覽器端采用gb2312的字符集,此時(shí)如果程序使用的是utf8的編碼(就是指以什么樣的編碼來(lái)編寫(xiě)的程序,一般在編輯器中設置),那么就會(huì )產(chǎn)生亂碼。
此時(shí)的解決方法就是把charset的值改為utf8。
2、代碼本身就存在亂碼問(wèn)題
這種情況是指你的代碼本身就存在亂碼問(wèn)題。照成這種情況的原因一般是你以另一種編碼格式修改了你的代碼后并做了保存,這樣你的程序中就有幾種編碼形式的代碼,那么輸出的時(shí)候自然就會(huì )有亂碼。這類(lèi)問(wèn)題相對來(lái)說(shuō)比較容易解決,只要人工找到那段有亂碼的代碼,然后修改就行了(很多編輯器可以完成這個(gè)工作)。
3、mysql的問(wèn)題(此次討論僅圍繞mysql5.0之后的版本展開(kāi))
現在再來(lái)看最容易照成亂碼,也是最容易讓人迷糊的mysql亂碼問(wèn)題。
要說(shuō)mysql亂碼,得先從mysql的幾個(gè)參數說(shuō)起,從mysql5開(kāi)始,多了幾個(gè)設置字符集的系統變量:
character_set_client 客戶(hù)端字符集 character_set_connection 客戶(hù)端與服務(wù)器端連接采用的字符集 character_set_results SELECT查詢(xún)返回數據的字符集 character_set_database 數據庫采用的字符集
亂碼問(wèn)題一般是由于以上幾個(gè)變量設置錯誤照成的,很多人在請教亂碼問(wèn)題的時(shí)候,一般都會(huì )得到一個(gè)這樣的答案:“你先set names一下”。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/