背景介绍
最近在处理txt文件,并且文件里包含了中文,发现很麻烦。
- 编码方式,一般来说,只含英文的用ASCII打开就好了,这样也会和手册上对应起来,比如哪一位是哪一位,哪几位代表什么含义,但是这样不能知道中文字符到底是什么,如果用UTF-8打开,那么可以显示中文字符,不过每一位代表的含义变了,因为一个中文顶替了两个英文字符的位置
- 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