Я использую $ jQuery .getJSON для получения списка городов.
Все хорошо работает, но я из Эстонии, и мы используем некоторые символы как õ, ü. ä, ö.
Когда я передаю буквы как это к функции обратного вызова, я продолжаю получать пустые строки. Я попробовал к base64, кодируют (серверная сторона) - декодируют (плагин jquery base64) строки (я думал, что это была хорошая идея, пока я могу сжать страницы с php, таким образом, я не должен волноваться о пропускной способности), но таким образом я заканчиваю с некоторыми случайными китайскими символами.
Каково было бы лучшее обходное решение для этой проблемы.
Спасибо.
Вам необходимо 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>
Используйте UTF-8 на страницах php и в качестве кодировки вывода
Это похоже на проблему с кодировкой/шифром: вы уверены, что используете:
Вы должны убедиться, что используете последовательную кодировку символов. Нужные вам эстонские символы находятся в utf-8, поэтому вам нужно использовать $. Ajax
и явно указать кодировку char (через contentType).
Вы можете взять полученный ajax и обработать его.
Вы также можете использовать ajaxSetup перед вызовом getJSON для установки типа содержимого.
http://api.jquery.com/jQuery.ajaxSetup/
Это позволит вам использовать getJSON
Кроме того, вот соответствующее сообщение SO на ту же тему: Как установить кодировку в .getJSON JQuery