Я искал вокруг какое-то время и еще не нашел что-то, что будет работать для меня. Я использую форму PHP для отправки данных в SAP с использованием API SAP DI. Мне нужно выяснить, какой набор символов позволит мне хранить и работать с вьетнамскими персонажами.Правильная кодировка для работы с вьетнамскими символами (это не Юникод) в PHP
UTF8, похоже, работает для многих персонажей, но ô становится Ã'. Что еще более важно, существуют ограничения на характер, а UTF-8 нарушает лимиты символов. Если у меня строка из 30 символов, она сообщает API, что это больше, чем 50. То же самое верно для хранения в MySQL - если есть предел символов varchar, UTF-8 заставляет строку перемещаться над ней.
К сожалению, когда я ищу, UTF-8, кажется, единственное, что люди предлагают для вьетнамских персонажей. Если я вообще не кодирую символы, они сохраняются как их коды символов html. Я также пробовал ISO-8859-1, конвертируя в UCS-2 или UCS-4 ... Я действительно в растерянности. Если у кого-то есть опыт работы с вьетнамскими персонажами, вам будет очень благодарна ваша помощь.
UPDATE
Похоже, проблема может быть с моей WampServer на Windows. вот немного кода, который сбивает с толку меня:
$str = 'VậTCôNG';
$str1 = utf8_encode($str);
if (mb_detect_encoding($str,"UTF-8",true) == true) {
print_r('yes');
if ($str1 == $str) {
print_r('yes2');
}
}
echo $str . $str1;
Это печатает «да», но не «да2», и $ str.str1 = «VậTCôNGVáºTCÃ'NG» в браузере.
У меня есть файл php.ini с:
default_charset = "utf-8"
и мой файл httpd.conf с:
AddDefaultCharset UTF-8
и мой файл PHP Я выбега:
header("Content-type: text/html; charset=utf-8");
Так что теперь я задаюсь вопросом: если исходная строка была utf-8, почему бы ей не равняться самой кодировке utf8? и почему кодировка utf8 возвращает неверные символы? Что-то не так в конфигурациях wampserver?
UTF-8 - это то, как вы хотите идти в конце, нет серьезной альтернативы. И набор символов UTF-8 определенно содержит вьетнамские символы, тот факт, что они получают «изменение», должен быть локальной проблемой с вашим набором. Однако вам нужно понять, как на самом деле работает кодировка UTF-8, чтобы понять эти изменения длины строки. – arkascha
@arkascha спасибо за ответ. Моя проблема с UTF-8 заключается в том, что если у меня есть жесткий лимит символов в 50 символов для API SAP DI, а строка 32 с несколькими вьетнамскими символами, она будет превышать лимит, а не вводить. Это похоже на разбойник, даже если я исправлю проблему набора символов. – Wan
@arkascha забудьте об этом ответе. Я думаю ты прав. Я обновил свой пост, есть ли у вас представление о том, почему это происходит? Или какая локальная проблема может произойти с моим набором? – Wan