나는 변환에 많은 접근 시도 utf8_unicode_ci
의 값 MySQL
에서 열 utf8_unicode_ci
을 shift_jis
하지만하지 고정하기.
원래 열 값이 있었고 shift_jis
새 호스팅을 사용할 때 변환되었습니다. 이제 값은 쓰레기처럼 보이지만 웹 사이트 프런트 엔드에서는 잘 보이고 있습니다.
테이블 열 값은 다음 과 같습니다. ƒEƒCƒ“ƒhEƒŠƒ“ƒO
table column 및 character set
are 문자 세트 .
나는 이것 mb_convert_encoding($str, "SJIS", "UTF-8");
과 다른 많은 것을 시도했지만 다시 변환하지 못했습니다. 가치있는 솔루션이 있습니까?
먼저 다음을 수행하여 테이블에 실제로 무엇이 있는지 확인하십시오.
SELECT col, HEX(col) ...
utf8이면 16 진수는 E38xyy
카타카나 및 히라가나 문자와 같이 3 바이트 집합이어야합니다 . 그렇지 않다면 이미 SJIS가있을 수 있습니다. (또는 다른 것)
테이블 열에
col VARCHAR(...) ... CHARACTER SET utf8 -- (or utf8mb4)
그런 다음 다음을 SELECT
수행하여 SJIS로 변환 할 수 있습니다.
mysqli_charset('sjis');
mysqli_query( ... )
대신 테이블을 utf8에서 sjis로 변환해야하는 경우 다음과 같이하십시오.
ALTER TABLE tbl CONVERT TO CHARACTER SET sjis;
그러면의 모든 열과 tbl
해당 열의 모든 데이터가 지정된 문자 집합으로 변환됩니다.
mb_*
또는 다른 변환 기능을 사용하지 마십시오 . 그것은 혼란을 더합니다.
ƒEƒCƒ“ƒhEƒŠƒ“ƒO
, latin1로 해석되는 경우 hex 834583438393836845838A8393834F
이며, sjis (또는 cp932)로 해석되는 경우 ウインドEリング
-예상했던 것입니까?
즉, ƒEƒCƒ“ƒhEƒŠƒ“ƒO
sjis를위한 Mojibake입니다 ウインドEリング
. Mojibake는 일반적 mysqli_charset
으로 위와 같이를 수행하여 수정됩니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다