我有一个韩语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;
}发布于 2015-10-26 02:30:07
不要使用任何mb或utf8tohtml函数。说明每个阶段的一切都是utf8。请参阅UTF-8 all the way through
utf8可能来自于从一开始就没有SET NAMES latin1字符,并且使用默认的SET NAMES latin1而不是SET NAMES utf8。
你的短信是EUCKR吗?请提供一些字符的巫术,我可能会进一步挖掘。
此外,请这样做,看看表中有什么:
SELECT col, HEX(col) FROM tbl WHERE ...这将提供一个线索,看看这些数据是被弄得乱七八糟的,还是被弄得乱七八糟的。
正确地用utf8 (或utf8mb4)编码,星期三是十六进制E6989F E69C9F E4B889,보드 개是十六进制EBB3B4 EB939C 20 EAB09C (为了清晰起见,我添加了空格)。
你所拥有的是汉语和韩语的结合,对吗?我强烈建议始终使用utf8mb4。
https://stackoverflow.com/questions/32994434
复制相似问题