怎么防止替换汉字的时候切开半个汉字?

白水
怎么防止替换汉字的时候切开半个汉字?

用=~s/old/new/g;         做汉字替换的时候

因为汉字都是双字节的,在替换单个汉字的时候,
常常出现上一个字的后半个字节、跟下一个汉字的前半个字节、刚好组成一个汉字,
并恰恰跟这个要替换的汉字匹配上,造成切开了半个汉字,
使得后面全成了乱码,怎么避免呢?

flute
我以前做的方法是:先统一汉字编码为UTF8,然后替换完后再判断是否是UTF8,

白水
编码是gb2312的

有没有更方便的做法呢

白水
顶一下,不要沉了

继续求解

surfybeach
回复 #4 白水 的帖子

先统一成utf8的方法算很简单的了,即使有其它的看似简便的办法,必定也是以编码识别或编码转换为基础的,识别字符并進行字符切分。不同的编码方法,字符与字节是不同的。参见大骆驼书第十五章Unicode的第一小节15.1. Building Character

hfahe
回复 #1 白水 的帖子

先decode 再encode