Почему jQuery get () удаляет специальные символы из CSV-файла? - PullRequest
1 голос
/ 12 октября 2011

Я пытаюсь ввести CSV для некоторого JavaScript, чтобы жевать и выплевывать на HTML-странице.CSV имеет несколько специальных символов, таких как ½ и × .Согласно Firebug, когда я помещаю точку останова в функцию обратного вызова $. Get () , похоже, что там уже отсутствуют специальные символы.Они заменяются какими-то пробелами, которые отображаются в виде знака вопроса или поля, если я копирую и вставляю их в другую программу.

Я пробовал

$.ajaxSetup({ 
    dataType: "text" , 
    contentType: "text/plain; charset=utf-8"
});

и другие варианты.Тип документа моей веб-страницы - 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 ]

1 голос
/ 12 октября 2011

Мля!Я должен был увидеть это раньше.Проблема была в том, что файл csv был закодирован как ANSI.Я кратко посмотрел на файл в Notepad ++ и должен был заметить проблему там, но я по глупости пропустил его в первый раз.Я выбрал «Формат»> «Преобразовать в UTF-8» в Notepad ++, и теперь он работает нормально.Таким образом, Марк Б. был ближе всего к ответу на вопрос, хотя он почему-то не опубликовал его как ответ.Теперь, как заставить OpenOffice правильно кодировать мои файлы ...

0 голосов
/ 12 октября 2011

Это классическая кодировка символов (я думаю).Я никогда не полагаюсь на отображение чего-либо большего, чем буквенно-цифровые символы.Что-нибудь еще я спасаюсь.Даже если ваш CSV вернется с правильными символами, они все равно могут испортиться после того, как вы распечатаете их в DOM (у меня был очень неприятный опыт с французскими символами и файлами свойств с акцентом, который исправлялся вечно, поэтому я больше не рискую с экзотическимисимволов.).

Любые символы в вашем HTML, кроме AZ, цифр и базовой пунктуации, должны быть экранированы:

&eacute; makes é
&mdash; makes —
0 голосов
/ 12 октября 2011

Как насчет этого

$.ajaxSetup({ 
    dataType: "text" ,  
    scriptCharset: "utf-8" , 
    contentType: "application/json; charset=utf-8"
});

Я нашел эту функцию в здесь

   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]);
   }
  }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...