Это относится к https://stackoverflow.com/questions/1791082/utf-8-php-and-xml-mysql, который я все еще пытаюсь осмыслить.
У меня есть пара отдельных вопросов, которые, надеюсь, помогут мне понять, как решать возникающие у меня проблемы.
Я пытаюсь прочитать значения из базы данных и вывести их в файл в формате UTF-8. Но у меня проблемы с кодированием, поэтому я подумал, что уберу весь свой код и начну с:
$string = "Otivägen";
// then output to a file.
Но в vim
Я даже не могу ввести эту строку, каждый раз, когда я вставляю ее, я получаю Otivägen
Я попытался создать пустой файл PHP только с этой строкой и загрузить его, но когда я cat
файл снова получаю Otivägen
.
Мои вопросы ...
1) Why is `vim` displaying it like this?
2) If the file is downloaded would it display correctly if an application was expecting UTF-8?
3) How can I output this string into a file that will eventually be an XML file in UTF-8 encoding.
Мое понимание кодировки на данный момент ограничено, и я пытаюсь понять это.
1) Почему
vim
отображать это так?
Похоже, vim отображает данные в кодировке UTF-8 как ISO 8859-1. Копирование и вставка могут быть проблематичными (вы не пишете, в какой системе вы находитесь), поэтому я бы посоветовал вводить текст напрямую.
Чтобы правильно отредактировать файл в vim, сначала настройте vim на использование UTF-8:
:set encoding=utf-8
Затем введите текст, убедитесь, что он правильно отображается, и сохраните. Это даст вам файл, закодированный в UTF-8.
2) Если файл загружен, будет ли он отображаться правильно, если приложение ожидает UTF-8?
Зависит от кодировки. Если сохранить как указано выше, то да.
3) Как я могу вывести эту строку в файл, который в конечном итоге станет XML-файлом в кодировке UTF-8.
Очевидно, это очень сложно. Я не так хорошо знаком с PHP, но, согласно Википедии:
В настоящее время PHP не имеет встроенной поддержки Unicode или многобайтовых строк; Поддержка Unicode будет включена в PHP 6 [...]
Так что вам, вероятно, придется поискать обходной путь в Google. Есть также несколько вспомогательных библиотек UTF-8 для PHP и UTF-8. В противном случае было бы лучше выбрать другой язык, например Java с надежной поддержкой Unicode.
UTF8 - это весело. Как только это сработает. : - / Если что-то в цепочке ожидает чего-то еще и не проверяет, то все идет в форме груши.
:set encoding
Я просто попробовал, и все заработало.
Ключ в том, что все должен быть в режиме UTF8.