如何用正则表达式替换掉文本字符串中的乱码?

时间:2023-01-03 15:14:50
比如:这是一个??戟懈叚眂!

中间的?号部分是乱码,想替换掉,如何用正则写?

不推荐循环,因为这个文本可能会很长

23 个解决方案

#1


你判断哪个字符在chr(127)之前,而且大于chr(127)即可 

#2


有没有正则?

#3


有人么,帮帮忙

#4


我看你那都是乱码  如果文本都是乱码  要进行基于编码的转换操作

#5


没有啊,"这是一个??戟懈叚眂! "前面部分是正常的呀。

#6


用ord()函数得到Ascii码,多少值为乱码范围???

#7


没人解答,自已顶呀

#8


最好还是转码操作

#9


$output = preg_replace('/\?/','',$output);

#10


Ůʽ ŷķ 钁涗紭璐哄瞾鐗

#11


编码是对了,是utf-8

#12


没有正则表达式可以判断吗?

#13



string result = Regex.Replace("??aaff??","\\?","");

#14


utf-8 不亂的話  你把文本轉碼就好了

iconv('utf-8',big5,'文本')

#15


关键是现在数据库里已有的数据记录里面有乱码,我想把它们清除出去,
但是要清除的必须要判断出记录里面有乱码呀,如何何判断????

#16


显示 ? 并不表示原文本是字符“?”
通常 gbk 文字被错误的截断后,截断处会显示“?”
utf-8 则显示“�”

#17


现在关键是:怎样才算乱码??

就根据  ? 这个符号?

根据 生僻字??

#18


//试下这代码,没测试过.....读取正常正符,忽略不正常字符


function sub_str($str, $charset = "utf-8"){
$re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
return join("",$match[0]);
}

#19


楼上的兄弟,你这是忽略所有中文字符吧,我试过,所有汉字都忽了,这不是我想的结果呢。

#20


如有三条记录:
1.ILove这是真的
2.ŷķ
3.绱㈤┈閲屾捣鐩

如何删除2,3 记录????

#21


自已顶了。。。痛苦中。。。

#22


治标不治本,你早把数据库、控制页面、处理页面、显示页面都做成utf-8不就没事,把这个标治好,你还会有其它的 等着你。建议你还是统一编码吧~~

#23


晕,这是过滤掉你不想要的字符,剩下的就是你想要的啦,,注意这不是只有中文..........


引用 18 楼 jianye112 的回复:
//试下这代码,没测试过.....读取正常正符,忽略不正常字符

PHP code


function sub_str($str, $charset = "utf-8"){
$re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/……

#1


你判断哪个字符在chr(127)之前,而且大于chr(127)即可 

#2


有没有正则?

#3


有人么,帮帮忙

#4


我看你那都是乱码  如果文本都是乱码  要进行基于编码的转换操作

#5


没有啊,"这是一个??戟懈叚眂! "前面部分是正常的呀。

#6


用ord()函数得到Ascii码,多少值为乱码范围???

#7


没人解答,自已顶呀

#8


最好还是转码操作

#9


$output = preg_replace('/\?/','',$output);

#10


Ůʽ ŷķ 钁涗紭璐哄瞾鐗

#11


编码是对了,是utf-8

#12


没有正则表达式可以判断吗?

#13



string result = Regex.Replace("??aaff??","\\?","");

#14


utf-8 不亂的話  你把文本轉碼就好了

iconv('utf-8',big5,'文本')

#15


关键是现在数据库里已有的数据记录里面有乱码,我想把它们清除出去,
但是要清除的必须要判断出记录里面有乱码呀,如何何判断????

#16


显示 ? 并不表示原文本是字符“?”
通常 gbk 文字被错误的截断后,截断处会显示“?”
utf-8 则显示“�”

#17


现在关键是:怎样才算乱码??

就根据  ? 这个符号?

根据 生僻字??

#18


//试下这代码,没测试过.....读取正常正符,忽略不正常字符


function sub_str($str, $charset = "utf-8"){
$re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
return join("",$match[0]);
}

#19


楼上的兄弟,你这是忽略所有中文字符吧,我试过,所有汉字都忽了,这不是我想的结果呢。

#20


如有三条记录:
1.ILove这是真的
2.ŷķ
3.绱㈤┈閲屾捣鐩

如何删除2,3 记录????

#21


自已顶了。。。痛苦中。。。

#22


治标不治本,你早把数据库、控制页面、处理页面、显示页面都做成utf-8不就没事,把这个标治好,你还会有其它的 等着你。建议你还是统一编码吧~~

#23


晕,这是过滤掉你不想要的字符,剩下的就是你想要的啦,,注意这不是只有中文..........


引用 18 楼 jianye112 的回复:
//试下这代码,没测试过.....读取正常正符,忽略不正常字符

PHP code


function sub_str($str, $charset = "utf-8"){
$re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/……