999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺析亂碼的產生原因及消除技術

2014-07-14 02:21:05余江平王偉
中國科技縱橫 2014年6期

余江平+王偉

【摘 要】 用戶在瀏覽網頁和進行協議分析的過程中,經常會遇到出現亂碼的情況,亂碼問題阻礙了正常工作。本文首先闡述了字符集和字符編碼的基本原理,接下來介紹了審計系統里面協議分析、報表生成等行為中亂碼產生的原因,接下來介紹了消除亂碼的辦法。

【關鍵詞】 字符編碼 字符集 審計系統 亂碼

1 引言

計算機中數據信息可分為數值和非數值信息。非數值信息包括了字母、各種控制符號、圖形符號等,它們都以二進制編碼方式存入計算機并得以處理。我們在屏幕上看到的英文、漢字等字符是二進制數轉換之后的結果。通俗的說,按照何種規則將各種字符集文字存儲在計算機中,如'a'用什么表示,“你好”用什么表示,稱為"編碼";反之,將存儲在計算機中的二進制數解析顯示出來,稱為"解碼",如果使用了錯誤的解碼規則,則可能導致亂碼。

2 字符集和字符編碼

2.1 概念

首先介紹相關概念。字符,即抽象意義上的一個符號。例如'1', '我', 'a', ‘%,'$', '¥', 。。。。字節,即計算機中的數據的存儲單元,是一個8位的二進制數。 例如0x01, 0x12,。。。。字符集,即多個字符的集合,而這些字符可能是各國家文字、標點符號、圖形符號、數字等。字符編碼:規定每個“字符”分別用一個字節還是多個字節存儲,用哪些字節什么形式來存儲。

編碼(encoding)和字符集不同。字符集只是字符的集合,不一定適合作網絡傳送、處理,有時須經編碼(encode)后才能應用如Unicode可依不同需要以UTF-8、UTF-16、UTF-32等方式編碼。

2.2 常見的字符集合對應字符編碼

常見字符集名稱:ASCII字符集、Unicode字符集等。計算機要準確的處理各種字符集文字,需要進行字符編碼,以便計算機能夠識別和存儲各種文字。

2.2.1 ASCII字符集與ASCII編碼

ASCII(American Standard Code for Information Interchange,美國信息交換標準代碼)它主要用于顯示現代英語,它是現今最通用的單字節編碼系統。

ASCII編碼:將ASCII字符集轉換為計算機可以接受的數字系統的數的規則。使用7位(bits)表示一個字符,共128字符;但是7位編碼的字符集只能支持128個字符為了表示更多的常用字符對ASCII進行了擴展,ASCII擴展字符集使用8位(bits)表示一個字符,共256字符 詳細可以查詢ASCII字符代碼表,其缺點是只能顯示現代英語單字節字符,一個字節(8位)存放一個字符。

2.2.2 GB2312等字符集和ANSI編碼

為使計算機支持更多語言,通常使用0x800~xFF范圍的2個字節來表示1個字符。比如漢字'中'在中文OS中,使用[0xD6,0xD0]這兩個字節存儲。

不同的國家和地區制定了不同的標準,由此產生了GB2312,BIG5,JIS等各自的編碼標準。這些使用2個字節來代表一個字符的各種漢字延伸編碼方式,稱為ANSI編碼。在簡體中文系統下,ANSI 編碼代表GB2312編碼,在日文操作系統下,ANSI編碼代表JIS編碼。

2.2.3 UNICODE字符集和utf-8 utf-16UTF-32編碼

計算機存放字符串時,改為存放每個字符在UNICODE字符集中的序號。目前計算機一般使用2個字節(16位)來存放一個序號(DBCS),因此,這種方式存放的字符也被稱作寬字節字符。例如"中文123"占五個序號,10個字節

我們知道,ASCII字符是單個字節的,比如“A”的ASCII是65。而Unicode是雙字節的,比如“A”的Unicode是0065,這就造成了一個非常大的問題:以前處理ASCII的那套機制不能被用來處理Unicode了。

另一個更加嚴重的問題是,C語言使用'\0'作為字符串結尾,而Unicode里恰恰有很多字符都有一個字節為0,這樣一來,C語言的字符串函數將無法正常處理Unicode,所以就產生了UTF,UTF= UCS Transformation Format,即UCS轉換(傳輸)格式。它是將Unicode編碼規則和計算機的實際編碼對應起來的一個規則。現在流行的UTF有2種:UTF-8和UTF-16,都是Unicode的編碼實現。

UTF-8兼容ASCII。UTF-8是變長的,將Unicode編碼為00000000-0000007F的字符,用單個字節來表示;00000080-000007FF的字符用兩個字節表示;00000800-0000FFFF的字符用3字節表示,Utf-16不兼容ASCII。

3 產生亂碼的可能原因以及解決方法

(1)取文本文件時,如果將“字節串”簡單地作為單字節字符串,采用每“一個字節”就是“一個字符”的方法進行轉化 那可能就會出現亂碼。

解決方法:應該將“字節串”作為ANSI字符串,采用適當的編碼來得到UNICODE字符串,有可能“多個字節”才能得到“一個字符”。

(2)協議分析過程中,例如http中與字符集和字符編碼相關的消息頭是Accept-Charset:瀏覽器申明自己接收的字符集和字符編碼如gb2312,utf-8。Content-Type:WEB服務器告訴瀏覽器自己響應的對象的類型和字符集。例如:Content-Type:text/html;charset='gb2312',所以是根據這兩個進行編碼轉換的。

(3)抓取數據包時候可能遇到的編碼。URL編碼:URL編碼遵循每對name/value,由&;符分每對來自表單的name/value由=符分開任何特殊的字符。Base64編碼:Base64是網絡上最常見的用于傳輸8Bit字節編碼的編碼方式之一,Base64編碼可用于在HTTP環境下傳遞較長的標識信息,在Xml格式文件明顯有使用到。

4 結語

本文闡述了字符集和字符編碼的基本原理,介紹了審計系統里面協議分析、報表生成等行為中亂碼產生的原因,介紹了消除亂碼的辦法。

參考文獻:

[1]徐新華.字符編碼詳解. http://polaris.blog.51cto.com/1146394/377468

[2]吳秦.字符集和字符編碼. http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html

[3]字符,字節和編碼. http://www.regexlab.com/zh/encoding.htmendprint

主站蜘蛛池模板: 国产电话自拍伊人| 亚洲av中文无码乱人伦在线r| 天天干天天色综合网| 素人激情视频福利| 国产又粗又爽视频| 中文字幕久久亚洲一区| 亚洲日韩欧美在线观看| 蝌蚪国产精品视频第一页| 老色鬼久久亚洲AV综合| 国产成人高清在线精品| 小13箩利洗澡无码视频免费网站| 天天爽免费视频| 免费网站成人亚洲| 亚洲国语自产一区第二页| 999在线免费视频| 日本在线国产| 亚洲精品动漫| 性色在线视频精品| 国产网站免费| 亚洲乱码在线播放| 国产精品亚洲欧美日韩久久| 一本久道热中字伊人| 夜夜操狠狠操| 亚洲成人黄色网址| 欧美中文字幕无线码视频| 97视频免费看| 国产精品自拍露脸视频| 国产精品观看视频免费完整版| 久草视频中文| 国产男女XX00免费观看| 日韩在线视频网站| 国产福利一区二区在线观看| 三级国产在线观看| 性色生活片在线观看| 国产精品99久久久| 中文字幕久久波多野结衣| 国产无码制服丝袜| 区国产精品搜索视频| 乱人伦99久久| 国产精品久久久久婷婷五月| 亚洲无码熟妇人妻AV在线| 色久综合在线| 国产成人三级| 日韩视频福利| 亚洲美女一区二区三区| 一级毛片免费播放视频| 超清无码一区二区三区| 91精品国产福利| 黑人巨大精品欧美一区二区区| 欧美日韩精品在线播放| 2020亚洲精品无码| 国产视频 第一页| V一区无码内射国产| 91在线视频福利| 国产精品网曝门免费视频| 国产微拍一区二区三区四区| 亚洲第一极品精品无码| 亚洲视频二| 国产一区二区三区免费| 国产一区在线观看无码| 国产激爽大片在线播放| 亚洲免费三区| 日韩精品亚洲一区中文字幕| 一级片免费网站| 久久99国产综合精品1| 福利一区三区| 中文字幕在线免费看| 精品国产污污免费网站| 国产亚洲一区二区三区在线| 国产精品成人免费视频99| 国产精品嫩草影院av| 99久久精品久久久久久婷婷| 亚洲视屏在线观看| a级毛片免费播放| 亚洲开心婷婷中文字幕| 亚洲欧美成人网| 国产又色又刺激高潮免费看| 天天摸夜夜操| 亚洲人成高清| 91小视频在线观看免费版高清| 国产91特黄特色A级毛片| 日韩a在线观看免费观看|