2012-02-29 3 views
8

utf8_encode() 및 iconv()를 호출하면 PHP에서 사용할 수있는 두 가지 방법이 UTF-8과 다른 charset을 갖고 있으며이를 JSON 형식으로 데이터베이스에 마이그레이션해야 할 때 PHP에서 사용할 수있는 두 가지 방법이 있습니다. . 어느 것이 더 나은 성능을 갖고 있는지 알고 싶습니다. 언제 다른 것을 사용하는 것이 편리합니까?iconv() Vs. utf8_encode()

답변

14

당신의 캐릭터가 다른 때 UTF-8

아니 - utf8_encode()이 UTF-8로 ISO-8859-1 문자열을 변환 적합합니다. Iconv는 많은 양의 원본 및 대상 인코딩을 제공합니다.

성능, 어떻게 내부적으로 어떤 라이브러리가 사용되는지는 알지 못하지만 내 예측에 차이는별로 없을 것입니다. 적어도 "정상적인"양의 데이터는 바이트 또는 킬로바이트 단위가 아닙니다. . 의심스러운 경우 벤치 마크를 수행하십시오.

나는 iconv()는 잘못된 데이터가 발생할 때 수행 할 작업에 대한 자세한 제어를 제공, 그것은 또한

B.

설정 문자 문자 집합 A로부터 변환이 있음을 명확 때문에 iconv()를 사용하는 경향이있다. //IGNORE을 대상 문자 집합에 추가하면 잘못된 문자가 자동으로 삭제됩니다. 이는 특정 상황에서 도움이 될 수 있습니다.

+0

또한 유 \ 00F, 그 자바 디코드 자동으로 ISO-8859-1로 변환이 유형을 생성 // trasnlit를 사용할 수 있습니다. 하지만 UTF-8로 인코딩 된 다른 문자 집합이있는 경우에도 동일한 결과가 발생할 것인지 잘 모르겠습니다. –

+0

PHP> = 5.4.0은'// IGNORE' 플래그가있는 경우에도 유효하지 않은 문자로 인해 실패합니다. https://bugs.php.net/bug.php?id=61484 – dotancohen

0

나만의 기능을 작성하는 것이 좋습니다. 길이가 2 ~ 3 줄이고 로케일, iconv 등의 문제로 고생하는 것보다 낫습니다. 예를 들어

: 는 Fix Turkish Charset Issue Html/PHP (iconv?)

+0

그리고 저자가 원하면 그가 가능한 모든 입력 문자를 모르는 접근법? –

관련 문제