Управление многобайтовой строкой на корейском языке с помощью mb_substr () приводит к бреду

у меня есть string по-корейски (multi byte string), с UTF-8 кодирование, при использовании mb_substr() он не может обнаружить его как multi byte и поэтому mb_substr() работает как substr() и я заканчиваю тем, что получаю бессмысленные символы, такие как « » в конце string,

象 大象 键盘 开裂 青蛙 混杂 纪念碑 问题 面包车 수요일 수요일 키보드 개구리 뒤범벅 뒤범벅 질문 질문 에 반 얼룩말 을 크래킹

Также используя mb_detect_encoding() я получил UTF-8Любые идеи, где я иду не так?

Текущая функция, которую я использую:

function cleanseData($data, $mode = false, $limit = 0) {
if ($mode) {
$data = (mb_strlen ( $data ) > ($limit + 3)) ? mb_substr ( $data, 0, $limit, mb_detect_encoding($data) ) . '...' : $data;
}
$data = utf8tohtml ( $data, true );
return $data;
}

2

Решение

Не используйте никакие функции mb или utf8tohtml. Укажите все на каждом этапе — это utf8. Увидеть UTF-8 полностью

, вероятно, происходит из-за того, что в первую очередь нет символов utf8 и используется значение по умолчанию SET NAMES latin1 вместо SET NAMES utf8,

Может ли быть так, что ваш текст EUCKR? Пожалуйста, предоставьте гекс для некоторого персонажа; Я могу копать дальше.

Также, пожалуйста, сделайте это, чтобы увидеть, что в таблице:

SELECT col, HEX(col) FROM tbl WHERE ...

Это даст ключ к пониманию того, были ли данные искажены в стол или искалеченный приход из.

Правильно закодировано в utf8 (или utf8mb4), 星期三 шестнадцатеричный E6989F E69C9F E4B889, а также 보드 개 шестнадцатеричный EBB3B4 EB939C 20 EAB09C (Я добавил пробелы для ясности.)

Что у вас есть сочетание китайского и корейского, правильно? Я настоятельно рекомендую utf8mb4 во всем.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]