这个公众号的名字是“空间”,但我已经很久没有写任何关于它的东西了。 这次写一下中文和代码的转换。 这是我在“中文论坛”上回答的一个问题。 问题:“如何转换为中文”:如何转换为中文 – 中文论坛()。 主持人“”给出了很好的回答。 其实有时候需要将中文转换成代码。 自己搜索一下相关资料。 下面简单说一下这三种方法的原理(只介绍中文的代码)。
1.功能:版主的方法和我的方法。 由于UTF-16考虑到不同的场景需求,所以分为大小端:UTF16-LE(小端)、UTF16-BE(大端)。 版主采用的方法是小端法(FF FE)(255 254),需要交换每个汉字的两个字节位置。 其实我的方法是直接使用big-方法,没有交换和添加big-标识符(FE FF)(254 255)。 所以版主的方法和我的一样,只是我用的参数比较直接,所以看起来更简单。 事实上,BE和LE的(FE FF)或(FF FE)不需要加上。 更多详情请参考字符编码第13篇-UTF-16编码方法-知乎()。 例如“ABC”三个字符的UTF-16编码(码元序列)为:00 41 00 42 00 43; 对应的字节序列如下所示。 代码“'UTF-16BE'”可以缩写为“'UTF-16'”,因为 BE 是默认值。 该函数是内部函数,无法查看源代码。
Str = '\u5143\u65e6\u5feb\u4e50\uff01';
hex = regexp(Str,'\\u(.{2})(.{2})','tokens');
str_out = native2unicode(hex2dec([hex{:}])','UTF-16BE')
str_out ='元旦快乐!
2. 不使用函数也是可以的。 只使用基本功能。 char 函数和。 原理是直接将两个字节的十六进制值转换为十进制值,并使用char函数将其转换为中文。
Str = '\u5143\u65e6\u5feb\u4e50\uff01';
hex = regexp(Str,'\\u(.{4})','tokens');
str_out = cellfun(@(x)char(hex2dec(x)),[hex{:}])
str_out = '元旦快乐!'
至于如何将中文转换成代码。 对于第一种方法,有and对应的函数; 第二种方法中,char对应的函数是abs。 不要以为abs函数只是一个绝对值函数。 它可以将符号转换成相应的十进制代码。 自己写代码。