久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

UTF-8,、Unicode,、Ansi的互相轉換解決方案

 Alkaid2015 2012-07-28
UTF-8,、Unicode、Ansi的互相轉換
*-----------------------------
      by:十豆三
    date:2011-11-15
vfp版本:vfp9.0(SP2 7423)
操作系統(tǒng):Windows XP(SP3)

Ansi:
    Ansi字符串我們最熟悉,,英文占一個字節(jié),,漢字2個字節(jié),以一個\0結尾,,常用于txt文本文件

Unicode:
    Unicode字符串每個字符(漢字,、英文字母)都占2個字節(jié),以2個連續(xù)的\0結尾,,
    NT操作系統(tǒng)內核用的是這種字符串,,常被定義為typedef unsigned short wchar_t;
    所以我們有時常會見到什么char*無法轉換為unsigned short*之類的錯誤,其實就是unicode,。

UTF8:
    UTF8是Unicode一種壓縮形式,,英文A在unicode中表示為0x0041,老外覺得這種存儲方式太浪費,,
    因為浪費了50%的空間,,于是就把英文壓縮成1個字節(jié),成了utf8編碼,,但是漢字在utf8中占3個字節(jié),,
    顯然用做中文不如ansi合算,這就是中國的網(wǎng)頁用作ansi編碼而老外的網(wǎng)頁常用utf8的原因,。

簽名BOM:BOM 是 Byte Order Mark 的縮寫,,是編碼方案里用于標識編碼的標準標記。
Ansi 文件沒有 BOM
Unicode 文件的 BOM 為:FF FE
UTF-8 文件的 BOM 為:EF BB BF,,不過 UTF-8 文件可以有 BOM,也可以沒有 BOM

lcUtf8Str=Filetostr('UTF-8編碼文件.txt')
If Left(lcUtf8Str,3)=Chr(0xEF)+Chr(0xBB)+Chr(0xBF)
    lcUtf8Str=Substr(lcUtf8Str,4)    && 去掉 UTF-8 的 BOM
Endif

*-- UTF-8 To Ansi (ANSI文件沒有簽名BOM)
=Strtofile(Strconv(lcUtf8Str,11),'Ansi編碼文件.txt')

*-- UTF-8 To Unicode (文件頭寫入Unicode文件的BOM)
=Strtofile(Strconv(lcUtf8Str,12),'Unicode編碼文件.txt',2) && 多謝 dkfdtf 提醒 Strtofile 函數(shù)參數(shù)3的使用

*------------------------------------------------

lcUnicodeStr=Filetostr('Unicode編碼文件.txt')
If Left(lcUnicodeStr,2)=Chr(0xFF)+Chr(0xFE)
    lcUnicodeStr=Substr(lcUnicodeStr,3)    && 去掉 Unicode 的 BOM
Endif
*-- Unicode To Ansi (ANSI文件沒有簽名BOM)
=Strtofile(Strconv(lcUnicodeStr,6),'Ansi編碼文件.txt')

*-- Unicode To UTF-8 (文件頭寫入UTF-8文件的BOM)
=Strtofile(Strconv(lcUnicodeStr,10),'UTF-8編碼文件.txt',4)

*------------------------------------------------

*-- Ansi To UTF-8 (文件頭寫入UTF-8文件的BOM)
=Strtofile(Strconv(Filetostr('Ansi編碼文件.txt'),9),'UTF-8編碼文件.txt',4)

*-- Ansi To Unicode (文件頭寫入Unicode文件的BOM)
=Strtofile(Strconv(Filetostr('Ansi編碼文件.txt'),5),'Unicode編碼文件.txt',2)

*------------------------------------------------

lcStr='abc十豆三123'

*-- 生成的 Ansi編碼文件.txt:12字節(jié)(每個英文和數(shù)字占1個字節(jié),,每個漢字占2個字節(jié))
=Strtofile(lcStr,'Ansi編碼文件.txt')

*-- 生成的 Unicode編碼文件.txt:20字節(jié)(每個英文,、數(shù)字及漢字占2個字節(jié),,另加上BOM長度2)
=Strtofile(Strconv(lcStr,5),'Unicode編碼文件.txt',2)

*--生成的 UTF-8編碼文件.txt:18字節(jié)(每個英文和數(shù)字占1個字節(jié),每個漢字占3個字節(jié))
=Strtofile(Strconv(lcStr,9),'UTF-8編碼文件.txt',4)

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多