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

主站蜘蛛池模板: 人妖无码第一页| 专干老肥熟女视频网站| 亚洲手机在线| 激情视频综合网| 国产三级a| 免费xxxxx在线观看网站| 熟妇丰满人妻| 亚洲无码精品在线播放| 国产在线第二页| 精品自窥自偷在线看| 亚洲天堂网视频| 久久青草视频| 国产在线精彩视频论坛| 精品自窥自偷在线看| 国产毛片片精品天天看视频| 亚洲欧洲日产国产无码AV| 久久国产亚洲偷自| 九色综合伊人久久富二代| 2019年国产精品自拍不卡| 午夜福利无码一区二区| 亚洲人成影视在线观看| 2021天堂在线亚洲精品专区 | 尤物成AV人片在线观看| 国产精品自在在线午夜区app| 日本91视频| 青青久视频| 国产一级α片| 视频二区国产精品职场同事| 一级毛片免费不卡在线视频| 五月天综合网亚洲综合天堂网| 久草视频中文| 欧美日韩在线亚洲国产人| 国产日韩丝袜一二三区| 91蜜芽尤物福利在线观看| 久久影院一区二区h| 国内毛片视频| 午夜精品久久久久久久无码软件| 久久天天躁夜夜躁狠狠| 亚洲日韩精品伊甸| 欧美在线天堂| 久久国产成人精品国产成人亚洲| 操操操综合网| 国产91熟女高潮一区二区| 精品一区二区三区水蜜桃| 成AV人片一区二区三区久久| 国产精品美女免费视频大全| 性色在线视频精品| 亚洲浓毛av| 亚洲第一视频网| 91网址在线播放| 国产精品自在在线午夜| 男女男精品视频| 欧美a在线视频| 日本www在线视频| 国产全黄a一级毛片| 国产精品第一区| 97se亚洲综合在线天天| 中文字幕波多野不卡一区| 精品91自产拍在线| 麻豆国产精品| 免费看的一级毛片| 国产精品福利尤物youwu| 亚洲一区免费看| 日本欧美在线观看| 国产成人久久综合777777麻豆| 日本不卡视频在线| 欧美a级完整在线观看| 国产成人乱码一区二区三区在线| 国产va欧美va在线观看| 国产成人精品高清不卡在线| 亚洲AV成人一区国产精品| 欧美成人综合在线| 亚洲成人免费在线| 欧美日韩专区| 亚洲三级a| 国产成人高精品免费视频| 欧美中日韩在线| 怡红院美国分院一区二区| 亚洲av成人无码网站在线观看| swag国产精品| 在线观看免费黄色网址| 黄色国产在线|