我正在尝试为一些javascript引入一个csv来咀嚼并在html页面上吐出。 csv有一些特殊字符,如½和×。根据Firebug,当我在 $。get() 的回调中放置断点时,看起来已经存在特殊字符缺失。如果我复制并将其复制到另一个程序中,它们将被替换为某种显示为问号或框的空格。
我试过了
$.ajaxSetup({
dataType: "text" ,
contentType: "text/plain; charset=utf-8"
});
和其他变化。我的网页的doctype是utf-8。我也试过8859-1。到目前为止,没有任何工作。
编辑:手动将字符放入html中或者使用html实体代码正常工作。用javascript放置它们也有效。唯一的问题是读取此CSV文件。
EDIT2:试试吧。在其中创建一个文本文件Öç¼»
。然后创建一个像这样的网页......
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
$.get("encodeme.txt", function(data){
console.log(data);
})
</script>
</head>
<body>
</body>
</html>
记录的所有内容都是空格和中文字符:�缻
。请注意,当我对其进行复制时,空格会显示为一个问号。
答案 0 :(得分:1)
布拉赫!我应该早点看到这个。问题是csv文件被编码为ANSI。我简单地看了一下Notepad ++中的文件,应该注意到那里的问题,但我第一次愚蠢地错过了它。我选择格式&gt;在Notepad ++中转换为UTF-8,现在它可以正常工作。因此Marc B最接近回答这个问题,尽管由于某些原因他没有将其作为答案发布。现在,如何让OpenOffice正确编码我的文件...
答案 1 :(得分:0)
这个怎么样
$.ajaxSetup({
dataType: "text" ,
scriptCharset: "utf-8" ,
contentType: "application/json; charset=utf-8"
});
我在here
中找到了这个功能 function char_convert(){
var chars = ["©","Û","®","ž","Ü","Ÿ","Ý","$","Þ","%","¡","ß","¢","à","£","á","À","¤","â","Á","¥","ã","Â","¦","ä","Ã","§","å","Ä","¨","æ","Å","©","ç","Æ","ª","è","Ç","«","é","È","¬","ê","É","","ë","Ê","®","ì","Ë","¯","í","Ì","°","î","Í","±","ï","Î","²","ð","Ï","³","ñ","Ð","´","ò","Ñ","µ","ó","Õ","¶","ô","Ö","·","õ","Ø","¸","ö","Ù","¹","÷","Ú","º","ø","Û","»","ù","Ü","@","¼","ú","Ý","½","û","Þ","€","¾","ü","ß","¿","ý","à","‚","À","þ","á","ƒ","Á","ÿ","å","„","Â","æ","…","Ã","ç","†","Ä","è","‡","Å","é","ˆ","Æ","ê","‰","Ç","ë","Š","È","ì","‹","É","í","Œ","Ê","î","Ë","ï","Ž","Ì","ð","Í","ñ","Î","ò","‘","Ï","ó","’","Ð","ô","“","Ñ","õ","”","Ò","ö","•","Ó","ø","–","Ô","ù","—","Õ","ú","˜","Ö","û","™","×","ý","š","Ø","þ","›","Ù","ÿ","œ","Ú"];
var codes = ["©","Û","®","ž","Ü","Ÿ","Ý","$","Þ","%","¡","ß","¢","à","£","á","À","¤","â","Á","¥","ã","Â","¦","ä","Ã","§","å","Ä","¨","æ","Å","©","ç","Æ","ª","è","Ç","«","é","È","¬","ê","É","­","ë","Ê","®","ì","Ë","¯","í","Ì","°","î","Í","±","ï","Î","²","ð","Ï","³","ñ","Ð","´","ò","Ñ","µ","ó","Õ","¶","ô","Ö","·","õ","Ø","¸","ö","Ù","¹","÷","Ú","º","ø","Û","»","ù","Ü","@","¼","ú","Ý","½","û","Þ","€","¾","ü","ß","¿","ý","à","‚","À","þ","á","ƒ","Á","ÿ","å","„","Â","æ","…","Ã","ç","†","Ä","è","‡","Å","é","ˆ","Æ","ê","‰","Ç","ë","Š","È","ì","‹","É","í","Œ","Ê","î","Ë","ï","Ž","Ì","ð","Í","ñ","Î","ò","‘","Ï","ó","’","Ð","ô","“","Ñ","õ","”","Ò","ö","•","Ó","ø","–","Ô","ù","—","Õ","ú","˜","Ö","û","™","×","ý","š","Ø","þ","›","Ù","ÿ","œ","Ú"];
for(x=0; x<chars.length; x++){
for (i=0; i<arguments.length; i++){
arguments[i].value = arguments[i].value.replace(chars[x], codes[x]);
}
}
}
答案 2 :(得分:0)
这是经典的字符编码(我认为)。我从不依赖于字母数字以外的任何字符来显示。我逃避的任何其他事情。即使你的CSV带有正确的字符,一旦你将它们打印到DOM,它们仍然可能会被破坏(我对法语重音字符和属性文件有一个非常讨厌的经验,这需要永远修复,所以我不再冒险用异国情调字符)。
除了A-Z,数字和基本标点符号外,HTML中的任何字符都应该转义:
é makes é
— makes —