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

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

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

因为汉字都是双字节的,在替换单个汉字的时候,
常常出现上一个字的后半个字节、跟下一个汉字的前半个字节、刚好组成一个汉字,
并恰恰跟这个要替换的汉字匹配上,造成切开了半个汉字,
使得后面全成了乱码,怎么避免呢?
我以前做的方法是:先统一汉字编码为UTF8,然后替换完后再判断是否是UTF8,
有没有更方便的做法呢
继续求解
先统一成utf8的方法算很简单的了,即使有其它的看似简便的办法,必定也是以编码识别或编码转换为基础的,识别字符并進行字符切分。不同的编码方法,字符与字节是不同的。参见大骆驼书第十五章Unicode的第一小节15.1. Building Character
先decode 再encode