Персонажи с JQuery JSON - PullRequest
       31

Персонажи с JQuery JSON

7 голосов
/ 16 марта 2010

Я использую jquery $ .getJSON для получения списка городов.

Все отлично работает, но я из Эстонии, и мы используем некоторые символы, такие как õ, ü. ä, ö.

Когда я передаю такие буквы в функцию обратного вызова, я получаю пустые строки. Я пытался кодировать строки base64 (на стороне сервера) -decode (плагин jquery base64) (я думал, что это хорошая идея, если я могу сжимать страницы с помощью php, поэтому мне не нужно беспокоиться о пропускной способности) но таким образом я получаю несколько случайных китайских символов.

Как лучше обойти эту проблему.

Спасибо.

Ответы [ 4 ]

4 голосов
/ 16 марта 2010

Вам нужно utf8_encode() ваши выходные данные. Нет необходимости устанавливать кодировку на стороне клиента в UTF-8, так как она уже используется по умолчанию.

<?php
    if( isset( $_GET['json'] ) ) {

        die( json_encode( array( 'text' => utf8_encode( 'õ, ü. ä, ö' ) ) ) );
    }

    include_jquery(); # this outputs jquery include
>?

<script>

    $.getJSON( 'this_file.php', { 'json': 1 }, function( data ) {
        console.log( 'data', data );
    });

</script>
2 голосов
/ 16 марта 2010

Вы должны убедиться, что сохраняете последовательную кодировку символов. Нужные вам эстонские символы находятся в utf-8, поэтому вы должны использовать $.ajax и задавать кодировку символов явно (через contentType).

Вы можете взять полученный ajax и обработать его.

Вы также можете использовать ajaxSetup перед вызовом getJSON для установки типа контента.

http://api.jquery.com/jQuery.ajaxSetup/

Это позволит вам использовать getJSON

Также вот соответствующий пост SO на ту же тему: Как установить кодировку в .getJSON JQuery

0 голосов
/ 16 марта 2010

Это похоже на проблему кодирования / кодировки: вы уверены, что используете:

  • Одна и та же кодировка везде в вашем приложении?
    • база
    • исходные файлы
    • HTTP-заголовки, отправленные в браузер
  • Кодировка, которая поддерживает эти символы?
    • т.е. : вы используете UTF-8?
    • Какая кодировка Unicode обычно используется для веб-приложений и поддерживает практически любой символ, о котором можно подумать
0 голосов
/ 16 марта 2010

Используйте UTF-8 на ваших php страницах и в качестве выходной кодировки

...