MATLAB读取中文txt

背景介绍

最近在处理txt文件,并且文件里包含了中文,发现很麻烦。

  1. 编码方式,一般来说,只含英文的用ASCII打开就好了,这样也会和手册上对应起来,比如哪一位是哪一位,哪几位代表什么含义,但是这样不能知道中文字符到底是什么,如果用UTF-8打开,那么可以显示中文字符,不过每一位代表的含义变了,因为一个中文顶替了两个英文字符的位置
  2. UTF-8并不经常好用,gb18030包含更全面

读取中文txt,并且判断中文的位置

% 1.1. 打开文件
fid = fopen(file, 'r+','n','gb18030');%打开为gb18030(ASCII)
% 1.2. 将所有内容读入到字符串集合bpa_info 中
bpa_info = cell(5000, 1);
ii = 1;
while (~feof(fid))
    newline = fgetl(fid);
    bpa_info(ii) = {newline};
    ii = ii + 1;    
    % 中文的部分
    pattern = '[^\x00-\xff]'; % 匹配中文字符的正则表达式
    str = native2unicode(newline, 'UTF-8');
    matchIndices = regexp(str, pattern); % 查找所有匹配项的位置
    numChinese = length(matchIndices); % 统计中文字符数量    
    if numChinese > 0
        disp(['该字符串包含 ', num2str(numChinese), ' 个中文字符']);
        disp([str(matchIndices)]);        
    else
        disp('该字符串不包含中文字符。');
    end
end
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
原创matlab读取txt中文文本的解决方案-程序.rar matlab中文的支持一直以来都是个不小的问题,尤其在读取文本方面。一般读出的中文文本都是乱码,网上找了半天没找到答案,自己研究了一下,在快要绝望的时候终于有了结果~ 呵呵     这个问题是在本论坛中的GUI教学视频第5课中提到的,学生的成绩单必须要转换成英文 数字才能正常读入,我用的是中文系统,用fopen试了一下,结果读出的中文是'???'样的乱码。不多废话,还是用本课视频的例子,为了证明读取中文的有效性,我把源程序的思路做了一下改动,界面中不做中文string的设置,全部由程序给出,解决方案如下 编程环境:matlab7.1;Windows XP professional SP2 更改后的代码 function matlab_GUI_4_OpeningFcn fdata = importdata    % 导入文本数据 ftextdatasize = size;   % 求文本类数据长度 fdatasize = size    % 求数据长度 counter = 1; while counter<ftextdatasize  % ftextdatasize 为 fdata.textdata 行数     % 从第二行开始取(从第二行起才为人名),第一行为标识     xingming = fdata.textdata;     counter = counter 1; end counter = 1; while counter<fdatasize 1     chengji = fdata.data;     counter = counter 1;    end set; handles.chengji = chengji; % 设成了全局变量,留着扩展用,其实只用局部变量也成 handles.kemu = fdata.textdata); set); set); set); set); 复制代码function listbox1_Callback value = get; % value为行向量,选择前2项即为[1 2]; set)); 复制代码结果如图 未命名.JPG 感谢管理员为我们做的如此精彩的视频,附件中为数据及代码(包括本例代码以及GUI视频教程第5课程序代码)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值