如何使用PHP按ASCII十六进制码查找替换文本中的指定字符
使用PHP处理Win1252编码文本中的0x9D符号
方法1:直接处理Win1252编码字节
如果你的文本本身就是Win1252编码的字节流,可直接定位并替换0x9D对应的字符:
// 读取Win1252编码的文本(示例:从文件读取) $win1252_text = file_get_contents('target_file.txt'); // 替换所有0x9D符号为空字符串,也可替换为空格等自定义内容 $clean_text = str_replace("\x9D", '', $win1252_text); // 若需保存回Win1252编码的文件 file_put_contents('clean_file.txt', $clean_text);
方法2:转换为UTF-8后处理
如果需要将文本转为UTF-8再操作,先完成编码转换,再替换0x9D对应的UTF-8编码(\xC2\x9D):
// 读取原始Win1252文本并转为UTF-8 $utf8_text = mb_convert_encoding(file_get_contents('target_file.txt'), 'UTF-8', 'Windows-1252'); // 替换UTF-8中的对应字符 $clean_utf8_text = str_replace("\xC2\x9D", '', $utf8_text); // 若需转回Win1252编码保存 $clean_win1252_text = mb_convert_encoding($clean_utf8_text, 'Windows-1252', 'UTF-8'); file_put_contents('clean_file.txt', $clean_win1252_text);
正则表达式替换(可选)
也可以用正则表达式实现全局替换,效果和str_replace一致:
// Win1252编码下替换 $clean_text = preg_replace('/\x9D/', '', $win1252_text); // UTF-8编码下替换 $clean_utf8_text = preg_replace('/\xC2\x9D/', '', $utf8_text);
注意事项
- 确保明确文本的原始编码:若不确定编码,可使用
mb_detect_encoding辅助检测,但建议优先确认文本来源的编码信息。 - 替换后的编码一致性:如果需要保持Win1252编码,处理后记得转换回对应编码再保存。
内容的提问来源于stack exchange,提问作者Maksym K.
相关产品推荐
相关产品推荐

