字符编码- Javascript字符集问题
character encoding - Javascript Charset problem
我想用javascript从服务器读取一个文件,并在html页面中显示它的内容。该文件是ANSI字符集,它有罗马尼亚字符。我想按照它们的方式来显示这些字符:D,而不是用不同的黑色符号。
所以我认为我的问题是charset..我有一个获取文件内容的get请求,如下所示:
function IO(U, V) {//LA MOD String Version. A tiny ajax library. by, DanDavis
var X = !window.XMLHttpRequest ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();
X.open(V ? 'PUT' : 'GET', U, false );
X.setRequestHeader('Content-Type', 'Charset=UTF-8');
X.send(V ? V : '');return X.responseText;}
据我所知罗马尼亚字符包含在UTF-8字符集中,所以我将请求头的字符集设置为UTF-8 ..这个文件是utf-8格式的,我有一个meta标签,告诉浏览器这个页面有utf-8内容。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
所以如果我向服务器查询直接文件,浏览器会显示罗马尼亚字符,但是如果我通过这个脚本显示页面内容,我只会看到符号而不是字符。那么我做错了什么呢?
谢谢!
PS:我希望这至少能在Firefox上工作,而不一定在所有浏览器上。
虽然我最初的假设与T.J. Crowder的假设相同,但快速聊天确定OP使用一些托管服务,并且不能轻松更改Content-Type头。
文件作为text/plain
或text/html
发送,没有任何Charset
参数,因此浏览器将它们解释为UTF-8(这是默认的)。
所以将文件保存为UTF-8(而不是ANSI/Windows-1252)就成功了。
您需要确保返回文件数据的HTTP响应具有正确标识的字符集。你必须在服务器端完成,我不认为你可以从客户端强制完成。(当您在请求报头中设置内容类型时,您是在设置请求的内容类型,而不是响应。)例如,来自服务器的响应报头应该是这样的:
Content-Type: text/plain; charset=windows-1252
…如果你说的"ANSI"指的是Windows-1252字符集。这应该告诉浏览器,在将响应文本传递给JavaScript层之前,它需要做些什么来正确解码响应文本。
不过有一个问题:据我所知,Windows-1252没有完整的罗马尼亚字母。因此,如果您看到像Ș
, ș
, Ţ
, ţ
等字符,这表明源文本不是Windows-1252。现在,也许可以在罗马尼亚语中删除变音符(我不知道),所以如果你的源文本只是使用S
和T
而不是Ș
和Ţ
等,它可能仍然在Windows-1252中。或者它可能是ISO-8859或ISO-8859-2(两者都省略了一些变音符号)或可能是ISO-8859-16(完全支持罗马尼亚语)。细节。首先要做的是确定源文本的实际字符集
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- TableExport jquery插件:文件名和扩展名问题
- JavaScript Pub/Sub属性访问问题
- JavaScript异步问题
- 如何解决Yii中的页面刷新问题
- Safari(Mac OS)上的jQuery平滑滚动问题
- 读取本地文本字符集问题
- JSP、JQuery和Javascript的字符集编码问题
- 转义HTML标记.字符集编码可能出现的任何问题
- 读取文件时出现字符集问题.如何修复
- 字符集有什么问题?
- 字符编码- Javascript字符集问题
- 字符集问题:外部 JavaScript 文件在 HTML 中删除非 ASCII 字符
- 编码字符集有问题