为什么jQuery get()从csv文件中删除特殊字符?

时间:2011-10-12 03:06:49

标签: jquery encoding csv

我正在尝试为一些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>

记录的所有内容都是空格和中文字符:�缻。请注意,当我对其进行复制时,空格会显示为一个问号。

3 个答案:

答案 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 = ["&copy;","&#219;","&reg;","&#158;","&#220;","&#159;","&#221;","&#36;","&#222;","&#37;","&#161;","&#223;","&#162;","&#224;","&#163;","&#225;","&Agrave;","&#164;","&#226;","&Aacute;","&#165;","&#227;","&Acirc;","&#166;","&#228;","&Atilde;","&#167;","&#229;","&Auml;","&#168;","&#230;","&Aring;","&#169;","&#231;","&AElig;","&#170;","&#232;","&Ccedil;","&#171;","&#233;","&Egrave;","&#172;","&#234;","&Eacute;","&#173;","&#235;","&Ecirc;","&#174;","&#236;","&Euml;","&#175;","&#237;","&Igrave;","&#176;","&#238;","&Iacute;","&#177;","&#239;","&Icirc;","&#178;","&#240;","&Iuml;","&#179;","&#241;","&ETH;","&#180;","&#242;","&Ntilde;","&#181;","&#243;","&Otilde;","&#182;","&#244;","&Ouml;","&#183;","&#245;","&Oslash;","&#184;","&#246;","&Ugrave;","&#185;","&#247;","&Uacute;","&#186;","&#248;","&Ucirc;","&#187;","&#249;","&Uuml;","&#64;","&#188;","&#250;","&Yacute;","&#189;","&#251;","&THORN;","&#128;","&#190;","&#252","&szlig;","&#191;","&#253;","&agrave;","&#130;","&#192;","&#254;","&aacute;","&#131;","&#193;","&#255;","&aring;","&#132;","&#194;","&aelig;","&#133;","&#195;","&ccedil;","&#134;","&#196;","&egrave;","&#135;","&#197;","&eacute;","&#136;","&#198;","&ecirc;","&#137;","&#199;","&euml;","&#138;","&#200;","&igrave;","&#139;","&#201;","&iacute;","&#140;","&#202;","&icirc;","&#203;","&iuml;","&#142;","&#204;","&eth;","&#205;","&ntilde;","&#206;","&ograve;","&#145;","&#207;","&oacute;","&#146;","&#208;","&ocirc;","&#147;","&#209;","&otilde;","&#148;","&#210;","&ouml;","&#149;","&#211;","&oslash;","&#150;","&#212;","&ugrave;","&#151;","&#213;","&uacute;","&#152;","&#214;","&ucirc;","&#153;","&#215;","&yacute;","&#154;","&#216;","&thorn;","&#155;","&#217;","&yuml;","&#156;","&#218;"];
  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中的任何字符都应该转义:

&eacute; makes é
&mdash; makes —