Google chrome 浏览器中文本文件的显示错误

Google chrome 浏览器中文本文件的显示错误,google-chrome,vim,encoding,utf-8,text-files,Google Chrome,Vim,Encoding,Utf 8,Text Files,看来我在文件编码方面遇到了麻烦。它是在CentOS服务器上通过SSH使用vim创建的文本文件。在浏览器中查看文件时,文件的编码存在问题 我创建了一个测试文件,它解释了这种行为: res.tobscore.com/test.txt 这就是我希望输出的样子(这只是一个html文件,使用特殊字符来正确显示umlaute): res.tobscore.com/test.html 在终端中使用命令文件和cat显示以下输出: user>file test.txt test.txt: UTF-8 Un

看来我在文件编码方面遇到了麻烦。它是在CentOS服务器上通过SSH使用vim创建的文本文件。在浏览器中查看文件时,文件的编码存在问题

我创建了一个测试文件,它解释了这种行为:

res.tobscore.com/test.txt

这就是我希望输出的样子(这只是一个html文件,使用特殊字符来正确显示umlaute):

res.tobscore.com/test.html

在终端中使用命令文件和cat显示以下输出:

user>file test.txt 
test.txt: UTF-8 Unicode English text
user>cat test.txt 
This is a testfile. I'm using the German Umlaute and the euro sign, to test
the encoding.
Euro - €
Scharfes S - ß
Ae - Ä
Oe - Ö
Ue - Ü
正如您所看到的,它是utf-8 unicode,并且显示正确。你有什么建议吗?为什么我的浏览器(Firefox和Chrome)在显示它时有问题?使用我的平板电脑(用德语设置)在本机浏览器中检查显示正确结果,但在Chrome上尝试显示同样可怕/错误的输出。
有没有一种方法可以设置编码,以便在每个环境中显示它都会显示相同的输出?

您的服务器很可能会将.txt文件作为内容类型:text/plain发送,但不发送字符集。因此,浏览器必须选择一些内容(很可能是ASCII、iso-8859-1或iso-8859-15),并将UTF-8字节显示为垃圾

一种解决方法是将文本文件包装在一个小PHP脚本中,并发送正确的编码:

<?php 
header ('Content-Type: text/plain; charset=utf-8');
readfile ('test.txt');
?> 

readfile()将把test.txt的内容转储到您的浏览器中,不作任何更改


注意,是基于扩展名(.txt)选择内容类型的Web服务器;您可能可以更改它,但您必须深入挖掘配置文件。

对于UTF-8文本,浏览器很难确定使用的编码,并且可能默认为系统编码。用户必须手动更改编码(例如,在Firefox中,视图>字符编码>Unicode(UTF-8)——这不是一个非常可行的解决方案)

解决此问题的一种方法是将web服务器配置为使用正确的
内容类型发送文本:text/plain;charset=utf-8
元数据(或者按照JvO的建议,通过PHP)

或者,您可以尝试以更易于检测的编码方式对文本文件重新编码,例如使用BOM(字节顺序标记)的UTF-16。在Vim中,通过以下方式保存文件:

 :setlocal bomb
 :w ++enc=utf16-le