zoukankan      html  css  js  c++  java
  • 从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

       

       

  • 相关阅读:
    dedecms 标签的基本用法
    修改config.php配置
    截取字符
    preg_replace 方法
    php过滤HTML标签、属性等正则表达式汇总
    各种正则验证
    解决问题 “You don't have permission to access /index.html on this server.”
    zend frameword 基本语法
    创建zend framework 项目要注意的
    PHP中级篇 Apache配置httpd-vhosts虚拟主机总结及注意事项[OK]
  • 原文地址:https://www.cnblogs.com/zizifn/p/4734456.html
Copyright © 2011-2022 走看看