日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ANSI/UTF-8/UCS2(UTF-16),以及回车换行

發(fā)布時間:2024/7/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ANSI/UTF-8/UCS2(UTF-16),以及回车换行 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近遇到一個linux 平臺上invisible character (0x1d)引起的數(shù)據(jù)裝載失敗問題,正好借此機會整理一下字符編碼的相關(guān)知識。

?

回車/換行:

=================

顧名思義,回車和換行是兩個不同的控制字符:

??? -回車(Carriage Return)即\r,ascii碼13(0x0d),作用是將光標移到一行的開始位置

??? - 換行(LineFeed)即\n,ascii碼10(0x0a),作用是將光標移到下一行

在不同的操作系統(tǒng)平臺上,默認是用不同的控制符來標志一行的結(jié)束:

??? -Windows: \r\n

??? -Linux/Unix: \n

??? - Mac: \r(據(jù)說近來也改成了\n)

這種不同實現(xiàn)導致的結(jié)果就是Winodws上的標準文本文件在其它平臺上會多出一個^M控制符,而其它平臺的文件在Windows上看會只有一行。Linux上有dos2unix/unix2dos命令來解決文本換行的問題。

?

字符編碼:

=================

文字是人類的語言,對于計算機來講,語言就是0和1而已,因此將字符保存在計算機里就會涉及到字符編碼的問題。網(wǎng)上有許多文章和博客介紹不同字符編碼方式,這里就不引用了。列一些我自己理解的重點:

ASCII:ANSI

最初的計算機存儲有限,字符的存儲使用的是8位的ASCII碼(最高位為0),最多可以存儲128個字符,加上擴展ASCII碼(最高位為1)也只能存儲256個字符。于是,各國都制定了自己的兼容ascii編碼規(guī)范,就是各種ANSI碼,來表示不同的語言中的不同文字。于是同樣的ASCII碼在不同的字符集(Collation/CharSet/CodePage)上就可以表示不同的字符,這就是為什么ANSI字符一定要與特定的Collation綁定才能表示唯一正確的字符,綁定錯了就可能出現(xiàn)亂碼(ascii碼小于128的字符不會亂碼)。

?

Unicode

又名萬國碼,所有語言的所有字符都可以用唯一的Unicode碼來標識。Unicode有幾種不同的實現(xiàn)方式:

??? - UTF-8:按照字節(jié)(8位)來存儲編碼,長度可變(1~6字節(jié))。完全兼容ascii碼,即標準ascii碼中的字符在unicode中也是以相同的碼來表示的。UTF-8使用第一個字節(jié)確定字節(jié)數(shù):第一個字節(jié)首為0即一個字節(jié),110即2字節(jié),1110即3字節(jié),字符后續(xù)字節(jié)都用10開始。

???- UTF-16 (UCS2):按照雙字節(jié)存儲字符,因此有字節(jié)序問題:即高位在前(Big Endian)還是低位在前(LittleEndian)。這個行為與CPU處理字節(jié)方式有關(guān),一般LittleEndian用得比較多。比如“漢”字,Unicode碼為0x6C49,按照Big Endian存儲就是6C49,LittleEndian則為496C。

?

如何區(qū)分不同編碼的文件:

用UltraEdit或者類似編輯器打開文本文件,切換到HexMode(ctrl + h),看文件頭:

???- 沒有任何特殊文件頭的,直接第一個字符就是文本內(nèi)容的,是ansi文件

???- 以BOM (Byte Order Mark) 開頭的是Unicode文件。BOM可以是0xFEFF(表示BigEndian)、0XFFFE(表示Little Endian)、或者0xEFBBBF (UTF-8)。

?

注意,在Windows上用Notepad保存一個UTF-8的文件,用UltraEdit查看也可能以0xFFFE開頭,這是因為UltraEdit可能自動將UTF-8的文件轉(zhuǎn)換成UTF-16格式。如果通過UltraEdit打開文件查看BOM來確定文件格式,并不是安全的。UltraEdit下方狀態(tài)欄則真實的顯示了當前打開文件的實際編碼格式,而不是當前編輯的編碼格式。對于一個普通Ascii 格式的文件,它顯示為DOS或者UNIX,對于一個包含有UTF-8編碼字符的文件,它顯示為U8-DOS或者U8-UNIX,對于UTF-16編碼的文件,它顯示為U-DOS 或者U-UNIX。

?

我們知道,UTF-8 對于Ascii 字符的編碼與原有的Ascii 編碼一致,因此假如我們刪除了一個UTF-8DOS文件中所有Ascii 以外的字符,保存后再打開,UltraEdit 將顯示為DOS(Ascii)。

如果我們不希望UltraEdit 在打開UTF-8 文件時自動轉(zhuǎn)為UTF-16格式編輯,我們可以修改配置。如下圖,確保“自動檢測 UTF-8文件”不被選中。



需要注意的是,如果取消了這個選項,UltraEdit打開包含UTF-8編碼的文件會產(chǎn)生亂碼。

UltraEdit 在File-Convertions菜單中提供了多種編碼格式之間的轉(zhuǎn)換,這將影響到保存的文件編碼,轉(zhuǎn)換后,在狀態(tài)欄也能看到相應變化。在有些選項后標明有(UnicodeEditing) 或者(ASCII Editing),這指定了編輯時顯示用的編碼,并不影響保存文件所用的編碼,要區(qū)分開。

工具WinHex 可以用來查看文件16進制內(nèi)碼。

?

Unicode與SQL Server:

================

UTF-8是目前使用最廣泛的Unicode編碼格式,但是SQLServer使用的是UTF-16作為Unicode字符的編碼格式,即NCHAR/NTEXT/NVARHCAR存儲的都是雙字節(jié)編碼的Unicode字符,以N為前綴(比如N'Hello')的字符串即為雙字節(jié)Unicode字符。對于UTF-8字符串,如果它只包含ANSI字符,則可以按照ANSI串處理;否則的話必須將UTF-8串轉(zhuǎn)換成UTF-16、再交給SQLServer 處理。這種行為可能帶來兩個常見的問題:

???- 許多程序(包括ASP.NET)在輸出文件的時候都使用UTF-8格式。如果這些文件需要被SQLServer正確地處理,必須進行轉(zhuǎn)碼至UTF-16。

???- SQL 2005以后支持對NativeXML進行處理,但是如果XML文檔本身是UTF-8編碼,就沒辦法直接處理。下面是一個例子:

????在SSMS中運行如下代碼,會得到錯誤9420:

???DECLARE @InfXML??????
???SET????@Inf = '<?xml version="1.0"encoding="utf-8"?>
????????????????????<root>
???????????????????????<names>
????????????????????????????<name>張三</name>
????????????????????????</names>
????????????????????????<names>
????????????????????????????<name>李四</name>
????????????????????????</names>
????????????????????</root>
???????????????????'?
?????
???SELECT? x.value('name[1]', 'VARCHAR(10)') ASName?
???FROM???

轉(zhuǎn)載于:https://www.cnblogs.com/xieyuan/archive/2012/08/23/3787476.html

總結(jié)

以上是生活随笔為你收集整理的ANSI/UTF-8/UCS2(UTF-16),以及回车换行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品无码电影在线观看 | 黄金网站在线观看 | 中文字幕一二三 | 免费人妻一区二区三区 | 亚洲综合丁香 | 午夜免费毛片 | 国产日韩视频一区 | 大地资源影视在线播放观看高清视频 | 中文在线资源 | 国产精品久久精品三级 | 公侵犯人妻一区二区 | 国产中文字幕网 | 日本黄色美女视频 | 日韩不卡视频在线 | 国产91免费看 | 久久精品天堂 | 午夜成人影视 | 免费看的av网站 | 五月六月婷婷 | 日韩欧美一区二区一幕 | 国产人人爽 | 嫩草影院菊竹影院 | 亚洲欧洲一级 | 日本高清免费不卡视频 | 永久av网站 | 伊人干综合 | 亚洲天堂日韩av | 中文字幕在线视频网站 | 国产精品乱码一区二区视频 | a级一a一级在线观看 | 四虎成人精品永久免费av | 韩国av中文字幕 | 精品久久久久久无码人妻 | 日韩精品一区二区三区网站 | 在线免费精品视频 | 伊人精品视频在线观看 | 亚洲国产精品视频一区二区 | 国产精品久久久久一区二区三区 | 国产免费黄色大片 | 成人av男人的天堂 | 日本综合色 | 亚洲视频在线免费播放 | 国产综合精品在线 | 青草99| 亚洲午夜精品视频 | 亚洲国产精品人人爽夜夜爽 | 亚洲GV成人无码久久精品 | 国产一区在线观看视频 | 国产成人av电影 | 一区二区三区视频播放 | 夜夜骑夜夜 | 久久久久久久久久久久久国产 | 黄色大片国产 | 日韩av午夜 | 老女人乱淫 | 青青草原成人 | 国产麻豆精品在线 | 李华月全部毛片 | 九热视频在线观看 | 插我舔内射18免费视频 | 中文字幕在线播放第一页 | 脱女学生小内内摸了高潮 | 三区四区| 成人精品视频网站 | 久久爱伊人| 黄色美女av | 成人黄色片视频 | 伊人丁香 | 亚洲一区亚洲二区 | 天天舔天天射 | 国产精品国产三级国产普通话蜜臀 | 美妇av| 日本高清www免费视频 | 波多野结衣绝顶大高潮 | 亚洲欧美激情一区二区三区 | 婷婷射| 男女扒开双腿猛进入爽爽免费 | 能看av的网站 | 少妇一级视频 | 国产美女精品一区二区三区 | 国产精品久久久久久久久借妻 | 精品久久无码中文字幕 | 日本在线视频免费 | 中文字幕女优 | 色成人综合| av大全在线 | 天天看毛片 | 国产一区二区麻豆 | 精品国产乱码久久久久久免费 | 成人精品三级av在线看 | 极品国产91在线网站 | 久久精品成人一区二区三区蜜臀 | 网站一区二区 | 自拍偷拍激情 | 一区二区在线视频免费观看 | www超碰 | 少妇在军营h文高辣 | 好吊日在线| 国产天堂精品 |