matlab unicode,MATLAB中的汉字编码 | 您所在的位置:网站首页 › matlab数值转换 › matlab unicode,MATLAB中的汉字编码 |
网上搜索的,转载别人的经验,经过自己实验,这个方法是可行的。 假设变量label='日',是一个汉字字符,从matlab的workspace可以看到,变量的大小为1×1。 实际占用两个字节。 可以通过执行double(label)看到这两个字节的unicode编码,这里是26085。 可以通过unicode2native转成本地编码,例如: yyy=unicode2native(label,'CP936') 可以看到yyy是个长度为2的数组了,即它的大小在workspace中显示为2×1。 其中yyy(1)的值为200,即十六进制编码的C8,yyy(2)的值为213,即十六进制编码的D5。 通过执行native2unicode,又可以吧yyy转回unicode编码。 一般情况下,你从文件中读出来的汉字,最初的编码是native形式,要转成unicode形式,才可以显示出来。 而当你把汉字写入文件时,也要先转换成native形式,才可以写。 下面以这两个过程的一个实例作为本文的结束。 %% 假设二进制文件mytest里包含一个“日”字, % 要把它显示出来,并要求写到另一个文件yourtest里。 %% Su, Tonghua % Sep. 17, 2009 fiIn=fopen('mytest.txt','r');%打开待读取文件 label=native2unicode(fread(fiIn,2,'uchar'),'CP936');%读取文件并转成unicode编码 disp(label);%显示汉字 fiOut=fopen('yourtest.txt','wt');%打开待写入文件 fwrite(fiOut,sprintf('%s\n',char(unicode2native(label,'CP936'))));%转换成本地编码并写入文件 另外, 一直为GB2312,GBK,GB18030和CP936之间的关系头痛,今天得到Python群里一位高人指点,明白了cp936就是指系统里第936号编码格式,也就是GB2312。 可以看表: 936 gb2312 简体中文(GB2312) 2、[msg,len]=fread(Txt_id,'ubit1');这条语句中,对应于Txt中的字符来说,msg读出的二进制码是按照从低位到高位的顺序排列的。 |
CopyRight 2018-2019 实验室设备网 版权所有 |