Php 如何从文件中动态删除问号垃圾数据?

Php 如何从文件中动态删除问号垃圾数据?,php,html,regex,perl,garbage,Php,Html,Regex,Perl,Garbage,我有一个数量未知的文件,其中散布着垃圾数据,我想动态地删除这些垃圾数据,也许可以使用regex 在浏览器的HTML文件中,它通常看起来像这样: 这是文件的开头,�� 在文件中,它将如下所示: 这是文件xE2xA0的开头 我尝试使用正则表达式编辑器删除它,但没有用,它根本找不到它。如何删除此垃圾数据?同样,有些文件具有各种HTML标记 感谢您的帮助。出现这些问题是因为您网站上的字符集有问题 例如,文件以Unicode格式存储,但内容类型设置为text/html;字符集=ISO-8859-1。问题还

我有一个数量未知的文件,其中散布着垃圾数据,我想动态地删除这些垃圾数据,也许可以使用regex

在浏览器的HTML文件中,它通常看起来像这样:

这是文件的开头,��

在文件中,它将如下所示:

这是文件xE2xA0的开头

我尝试使用正则表达式编辑器删除它,但没有用,它根本找不到它。如何删除此垃圾数据?同样,有些文件具有各种HTML标记


感谢您的帮助。

出现这些问题是因为您网站上的字符集有问题

例如,文件以Unicode格式存储,但内容类型设置为
text/html;字符集=ISO-8859-1
。问题还可能是如何将文本存储在数据库中,或者如何用编程语言在内部表示文本

与其试着把它们去掉,不如让字符集正确。这通常是一个令人沮丧的过程,因为有太多问题可能被引入

你不会说你使用了什么技术。通常,您可以使用特定技术(如“字符集问题mysql”)搜索如何解决字符集问题,以找到解决方案


我建议使用命令行工具,如
file
检查文本文件存储在哪个字符集中,以及
iconv
将文本文件从一个字符集转换为另一个字符集。

有两种可能。第一个不太可能的情况是,您得到的是
0xe2 0xa0…
,因为文档中有

至于第二种可能性,
0xa0
0xe2
让我想起了

有没有可能有人从某个软件包的俄罗斯版本复制并粘贴了一些东西


您也可以。

这听起来像是代码页问题。您可能正在查看编码错误的数据。例如,如果它是用ISO8859编码的,您可以用Unicode查看它。Cheers这不是垃圾数据,您使用了错误的编码来读取文件。你想干什么?我感觉你有一个问题,那是一个角色集问题。您的计算机无法识别这些字符,因此显示为?xE2是控制字符的表示形式,使用正则表达式很难删除它。谢谢大家的贡献。我同意,这是一个XY问题。不幸的是,我很难确定字符编码集。Notepad++将其编码为UTF-8。我把它改成了ascii,问号变成了a,上面有一个卡洛特符号。提到的stackoverflow文章在删除它方面帮助很大。但是如果这是一个XY问题,那么它在技术上并不能解决这个问题。尽管如此,如果我不能确定角色集,我还有什么选择?谢谢你的帮助。我不确定这些页面最初是用什么编码的。不幸的是,它们不是我的页面。它主要是静态代码,而数据库在这一点上是不平衡的。页面显示为UTF-8(我使用的是notepad plus)。我还想补充一点,我使用的是Windows,而不是Unix/Linux设备。所以,文件和iconv是不可能的,但这是很好的未来知道,谢谢你。盲文没有检查出来,肯定是非常不可能的。我试过ISO-8859-5,但没有成功。可能是日语编码,我试过了,但没用。绝对不是俄罗斯人。感谢您提供iconv的链接。我将安装它并更新此空间。好的。谢谢你的更新。此外,还可以尝试Windows版本的编码。祝你好运。我尝试了大量不同的编码集,但都没有消除控制字符。在短期内,我使用regex删除了它们。我发现,这些文件是从一个外部进程生成的,这意味着这个进程可能正在注入控制字符。我对外部过程没有太多控制权。因此,删除它们可能是我任务的最佳选择。但我明白,这显然不是理想的解决方案。