上一篇博客:从字节理解Unicode(UTF8/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分析的结果。(请参考上篇博客。从字节理解Unicode(UTF8/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的,注定是低字节序。(请参考,上篇博客从字节理解Unicode(UTF8/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)相关推荐

  1. Unicode(UTF-8, UTF-16)令人混淆的概念 和 python unicode转中文及转换默认编码

    Unicode(UTF-8, UTF-16)令人混淆的概念 [转载](https://www.cnblogs.com/fnlingnzb-learner/p/6163205.html) 为啥需要Uni ...

  2. Unicode, UTF8, UTF16, UTF32

    Unicode, UTF8, UTF16, UTF32之间的关系 Unicode是编码字符集,而UTF-8, UTF-16, UTF-32是字符集编码. Unicode用一些基本的保留字符制定了三套编 ...

  3. Unicode(UTF-8, UTF-16)的简单理解

    文章目录 一.Unicode出现的意义 1)背景 2)发展起源ASCII码 3)ASCII码的缺点和优点 4) Unicodey出现的意义 二.Unicode详细介绍 0)Unicode定义 1)涉及 ...

  4. 大端小端,ascii,unicode,utf8,utf16,utf32,gb2312,gbk,gb18030等字符编码问题

    字符编码的问题让我困惑了好久的一段时间,其实简单的想,字符编码没有什么东西的,可是想真弄明白还是花去了我一点时间,前端时间写了一个简单的log程序,主要的工作就是支持系统运行时输出日志信息,同时允许定 ...

  5. Unicode(UTF-8, UTF-16)令人混淆的概念

    为啥需要Unicode 我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的01串时肯定会比较头晕的,所以很多时候为了描述简单都用十进制,十六进制,八进制表示.实际上都是等价的, ...

  6. Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4

    1. Unicode与ISO 10646 全世界很多个国家都在为自己的文字编码,并且互不想通,不同的语言字符编码值相同却代表不同的符号(例如:韩文编码EUC-KR中"한국어"的编码 ...

  7. 正确理解UNICODE UTF-8等编码方式

    [color=darkred]转载出处:[/color][url]http://blog.csdn.net/polarman/archive/2007/04/30/1593159.aspx[/url] ...

  8. unicode,UTF-8,UTF-16,UTF-32是什么,各有什么关系

    1.Unicode(统一码.万国码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码 ...

  9. gbk, gb2312,big5,unicode,utf-8,utf-16的区别

    本文转自http://blog.chinaunix.net/uid-446337-id-94462.html详细说明了各种编码的区别于联系,对于支持国际化很重要,否则各种乱码能搞死人! Unicode ...

最新文章

  1. myBaits SQL
  2. bzoj千题计划248:bzoj3697: 采药人的路径
  3. linux svn安装和配置
  4. format函数python的顺序_[转载] Python中format函数用法
  5. yunyang tensorflow-yolov3 Intel Realsense D435 (并发)使用locals()函数批量配置摄像头运行识别程序并画框(代码记录)(代码示例)
  6. 创业——不可忽视的创业计划书!!!
  7. AR Software
  8. php中修改弹窗的样式,CSS变形弹窗效果示例
  9. 使用Pandas 1.1.0进行稳健的2个DataFrames验证
  10. TCP是如何保证包的顺序传输
  11. javascript遍历对象的属性
  12. 大数据分块_空间数据库基础理论 GIS空间数据处理分析涉及的基本概念
  13. 加载gif图片的方法:(需要SDWebImage方法)
  14. /boot 目录文件丢失修复记录
  15. 20201124:力扣第216场周赛(上)
  16. python35个关键字_Python必须了解的35个关键词
  17. 手机usb计算机连接不能选择,USB调试 是灰色按钮,无法点击,现在手机无法与电脑连接。...
  18. 图信号处理之图拉普拉斯矩阵的含义
  19. 【服务器管理】Ubuntu的一次惊心动魄的查杀挖矿病毒的经历:病毒伪装成python
  20. 微信小游戏如何突破4M限制

热门文章

  1. 奥特曼系列ol服务器名称带怪兽,《奥特曼系列ol》怪兽图鉴 怪兽阵容
  2. java语言执行模式,使用java.exe执行静默模式
  3. java生成大素数_用BigInteger实现大素数生成算法
  4. html ajax 菊花,Ajax加载菊花loding效果
  5. Windows底层窗口的实现———学习笔记
  6. Eclipse2020版本:pom.xml第一行报错:Could not initialize class org.apache.maven.plugin.war.
  7. 人人开源 VUE项目报错./src/assets/scss/index.scssModule build failed: Error: ENOENT: no such file or direct
  8. 毕设/私活/兼职必备,一个挣钱的开源【SpringBoot+Spring Security+MyBatis Plus】脚手架
  9. python矩阵运算dot_numpy中的dot矩阵乘法
  10. linux生成文件自带时间,linux生成固定日期文件及删除一定日期前的文件