2011-06-25 101 views
0

我有一些UTF-文本开始“EF BB BF”。我怎样才能把这个信息转化为人类可读的文字? vim,gedit等将文件解释为纯文本并显示所有ef-text,即使我强制他们用多个utf编码读取文件。我试过“recode”工具,它不起作用。即使php的utf8_decode也无法产生预期的文本输出。转换文本阅读,能够文本

请帮帮忙,我怎么可以把这个文件,这样我可以看了吗?

+0

也许它不是UTF-8,在文件上运行'file'工具来查看它的想法。 (也许你没有正确的字体来显示什么文本= – nos

+0

文件说:_data:ASCII text_ –

回答

-1

是否UFT8,UTF16,UTF32?这很重要!我假设你想把文本转换成老式的ASCII(所有字符都是1个字节长)。

UTF8应该已经是(至少大部分)可读,因为它使用了标准的ASCII字符1个字节和仅使用特殊/多语言字符多个字节(字符代码> 127)。这听起来像你的文件不是UTF8,或者你已经能够阅读它!在线内容通常是UTF-8。

Unicode字符代码是相同的旧ASCII码高达127

UTF16和UTF32始终使用2首4个字节分别到每个字符编码,是否这些字符可以在单个字节表示或不。如果文本编辑器期待UTF8,那么这使得它不可读。

Gedit的支持UTF-16和UTF32,但你需要在打开的对话框中明确的“添加”那些编码(也可能选择其中明确,而不是使用自动检测)

+0

有人指出,EF BB BF是UTF8的字节顺序标记这是很少用于UTF8(事实并非如此。必要UTF8),但如果存在的话,将在十六进制编码,所以打开以纯文本文件应产生3个垃圾字符,而不是字符串“EF BB BF”。这听起来像文件被输出的十六进制形式产生和管道它成一个文本文件。 – dwk

1

ef bb bfUTF-8 BOM。前三个字节的条形码,并尝试utf8_decode其余部分。

$text = "\xef\xbb\xbf...."; 
echo utf8_decode(substr($text, 3));