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

        歡迎訪問 生活随笔!

        生活随笔

        當前位置: 首頁 > 编程语言 > C# >内容正文

        C#

        从C# String类理解Unicode(UTF8/UTF16)

        發布時間:2025/3/15 C# 29 豆豆
        生活随笔 收集整理的這篇文章主要介紹了 从C# String类理解Unicode(UTF8/UTF16) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

        上一篇博客:從字節理解UnicodeUTF8/UTF16)。這次我將從C# code 中再一次闡述上篇博客的內容。

        ? ?

        ? ?

        C# 代碼看UTF8

        ? ?

        代碼如下:

        string test = "UTF-8你";

        ? ?

        //把字符轉換為 byte[]

        byte[] bytearray_UTF8 = Encoding.UTF8.GetBytes(test);

        // byte[] to 16 進制的字符形式

        String hexString = BitConverter.ToString(bytearray_UTF8);

        ? ?

        運行后的結果"hexString "就是"55-54-46-2D-38-E4-BD-A0",字符"你"占3個字節,3個字節為"E4-BD-A0"。

        ? ?

        完全符合上篇博客用txt分析的結果。(請參考上篇博客。從字節理解UnicodeUTF8/UTF16)

        ? ?

        ? ?

        C# 代碼看UTF16

        代碼如下:

        ? ?

        string test = "UTF-8你";

        ? ?

        ????????//把字符轉換為 UTF16 byte[]

        byte[] bytearray_Unicode = Encoding.Unicode.GetBytes(test);

        //byte[] to 16 進制的字符形式

        String hexString_UTF16 = BitConverter.ToString(bytearray_UTF8);

        ? ?

        ? ?

        運行后的結果"hexString_UTF16"就是"55-00-54-00-46-00-2D-00-38-00-60-4F",字符"你"占2個字節,3個字節為"60-4F"。(Widnwos(.net)默認Unicode是UTF16)

        ? ?

        完全符合上篇博客用txt分析的結果。當然字節序也完全一樣,因為我的CPU是intel的,注定是低字節序。(請參考,上篇博客從字節理解UnicodeUTF8/UTF16)

        ? ?

        ? ?

        ? ?

        從C#代碼String 類和從文本角度查看二進制角度得到的結果是完全一致的。當然這也不難理解,無論從String類角度,還是文本角度,他們使用的都是UTF8/UTF16。那么他們從字節角度都應該得到一致的結果。

        ? ?

        ? ?

        從字節角度看圖片和視頻??

        ? ?

        ? ?

        那么從一個文本文件的二進制,然后在知道這個文本用的是UTF8/UTF16,(其實很多情況我們可以判斷出一個文本文件的編碼是UTF8或者UTF16),就可以從二進制的角度去理解和修改文本文件。這樣即使你把文本文件損壞,然后修復者按照這樣的方式,可以把大部分的文本修復回來,只要損壞程度不高,理解起來完全沒有問題。

        那么或許你會問,那么圖片和視頻呢?他們不也是一個一個的字節嗎?那么我可以從字節角度去理解或者修復一副圖片和一個視頻文件嗎?

        ?

        讀到這里你是不是想到一個TED演講,說的是一個攝影師,照相機被人偷走,最后找到相機,但是文件都被刪除了,于是他求助數據修復師,最后得到一些非常奇怪的圖片,然后他就辦了一個這樣照片的展覽。

        那么當然是可以得。但是實際操作起來是很麻煩的。因為,圖片和視頻都有復雜的格式,格式決定他們是如何存儲和讀取信息的。類似于字符的UTF8/UTF16。圖片有JPG等等格式,你必須理解這樣格式是怎么編碼的,你才能去正確的修改圖片。

        感興趣的話,可以參考以下文章。

        JPEG編解碼過程詳解

        http://www.zhihu.com/question/22293783

        ? ?

        ? ?

        轉載于:https://www.cnblogs.com/zizifn/p/4734456.html

        總結

        以上是生活随笔為你收集整理的从C# String类理解Unicode(UTF8/UTF16)的全部內容,希望文章能夠幫你解決所遇到的問題。

        如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。