그래서 나는 %u041E%u043B%u0435%u0433%20%u042F%u043A
을 실제 UTF-8로 저장하는 방법 (또는 HTML 엔터티에 더 좋음)을 저장하는 방법이 있습니까?이상한 문자열을 UTF-8로 디코딩하는 방법은 무엇입니까? (PHP)
답변
있다. URL 인코딩과 비슷하지만 호환되지 않습니다. 그것을 전혀 사용하는 것은 대개 실수입니다.
가장 좋은 방법은 적절한 URL 인코딩 (encodeURIComponent()
)을 대신 사용하여 생성하는 스크립트를 변경하는 것입니다. 그런 다음 서버 측에서 urldecode
또는 다른 일반 URL 디코딩 기능을 사용하여 디코딩 할 수 있습니다.
이 비표준 형식의 데이터를 반드시 교환해야하는 경우 사용자 지정 디코더를 작성해야합니다.
function jsunescape($s) {
$s= preg_replace('/%u(....)/', '&#x$1;', $s);
$s= preg_replace('/%(..)/', '&#x$1;', $s);
return html_entity_decode($s, ENT_COMPAT, 'utf-8');
}
이렇게하면 원시 UTF-8 바이트 문자열을 반환합니다. Ру...
과 같은 HTML 문자 참조를 원할 경우 html_entity_decode
호출을 중단하십시오. 그러나 일반적으로 당신은하지 않습니다. 최종 출력을 위해 이스케이프해야 할 때까지 문자열을 원시 형식으로 유지하는 것이 가장 좋습니다. 실제로 필요하지 않은 한 비 ASCII 문자를 문자 참조로 바꾸지 않는 것이 가장 좋습니다. 이 같은 일부 문자열이 내게 올 경우 어떤
'%의 CE의 % EB %의의 E5 %의 E3 + % DF % EA % F3 %의 F8 키 %의 EA의 %의 E8 %의 ED' URL 형태의
-encoded이며 escape()
형식과 직접 호환되지 않습니다. URL 인코딩의 2 자리 바이트 이스케이프는 미친 escape
- 형식 4 자리 코드 단위 이스케이프와 다르지만 문자 +
은 모호합니다. 플러스 (문자열이 escape
에서 온 경우) 또는 공백 (브라우저 양식 제출에서 온 경우)을 의미 할 수 있습니다. 그것이 어느 것인지 알 방법이 없습니다. 이것은 escape()
을 사용하지 않는 또 다른 이유입니다.
이 캐릭터 세트의 캐릭터 세트가 UTF-8의 경우는, 위의 함수는 URL encode 된 바이트와 미완료의 escape()
-format Unicode 문자를 그대로의 UTF-8 바이트로 변환 해, 괜찮습니다.
실제로 코드 페이지 1251 (Windows 러시아어) 인 것으로 보입니다. cp1251에서 모든 문자열을 정말로 처리하고 싶습니까? 그렇다면 네 자리 이스케이프를 다른 문자 집합으로 인코딩하도록 비트를 약간 변경해야합니다. 이 더러워 :
function url_or_maybe_jsescape_decode($s, $charset, $isform) {
if ($isform)
$s= str_replace('+', ' ', $s);
$s= preg_replace('/%u(....)/', '&#x$1;', $s);
$s= preg_replace('/%(..)/', '&!#x$1;', $s);
$s= html_entity_decode($s, ENT_COMPAT, $charset);
$s= str_replace('&!', '&', $s);
$s= html_entity_decode($s, ENT_COMPAT, 'utf-8');
return $s;
}
echo url_or_maybe_jsescape_decode('%CE%EB%E5%E3+%DF%EA%F3%F8%EA%E8%ED', 'cp1251', TRUE);
나는 강력하게 추천 할 것입니다 :
가 적절한
encodeURIComponent
하지escape
을 사용하도록 플래시 파일을 수정,이 추한 대신 표준 URL 디코더를 사용할 수 있도록 마구 자르기.대신 UTF-8을 사용하여 러시아어 이외의 언어도 지원할 수 있으므로 제출 양식의 입력 인코딩이 변경되는 것에 대해 걱정할 필요가 없습니다.
(모든 인코딩은 UTF-8을 사용하지 않으며 과학에서 입증 된 사실입니다!)
다른 사람이 제안한 것처럼 유니 코드 HTML 엔터티로 변환하십시오. 플래시 "탈출 (문자열)"에 의해 생성이 내가 사용하는 정규식,
function escapePercentU($s) {
$s = preg_replace("/%u([A-Fa-f0-9]{4})/", "&#x$1;", $s);
return html_entity_decode($s, ENT_COMPAT, 'utf-8');
}
- 1. PHP 직렬화 된 문자열을 utf8로 변환하는 쉬운 방법은 무엇입니까?
- 2. 자바 스크립트에서 변수의 문자열을 디코딩하는 방법은 무엇입니까?
- 3. java에서 런타임시 문자열을 디코딩하는 방법은 무엇입니까?
- 4. 이 JSON 문자열을 디코딩하는 방법은 무엇입니까?
- 5. 이 PHP 코드를 디코딩하는 방법은 무엇입니까?
- 6. C에서 문자열을 디코딩하는 방법 #
- 7. 아이폰에서 문자열을 디코딩하는 방법
- 8. phpciphered 파일을 디코딩하는 방법은 무엇입니까?
- 9. C에서 base64를 디코딩하는 방법은 무엇입니까?
- 10. latin1 문자열을 utf8로 변환 하시겠습니까?
- 11. 유니 코드 문자열을 utf8로 변환
- 12. ansi 텍스트를 utf8로 변환하는 방법은 무엇입니까?
- 13. C#에서 "string \ x27s"와 같은 문자열을 디코딩하는 방법은 무엇입니까?
- 14. Windows Mobile에서 URL 인코딩 문자열을 디코딩하는 방법은 무엇입니까?
- 15. iphone에서 UTF8 문자열을 디코딩하는 방법
- 16. C++에서 문자열을 디코딩하는 방법
- 17. H264 스트림을 디코딩하는 방법은 무엇입니까?
- 18. json 데이터 배열을 디코딩하는 방법은 무엇입니까?
- 19. VBS를 사용하여 sql_latin1_general_cp1_ci_as 문자열을 utf8로 변환하십시오.
- 20. C- 문자열을 로컬 인코딩에서 UTF8로 변환
- 21. Wordpress mysql DB를 UTF8로 변환하는 방법은 무엇입니까?
- 22. objective-c NSArray를 UTF8로 인코딩하는 방법은 무엇입니까?
- 23. PHP에서 JSON 웹 서비스를 호출하고 디코딩하는 방법은 무엇입니까?
- 24. xslt를 사용하여 html 문자열을 디코딩하는 방법
- 25. 루비로 ANSI를 UTF8로 변환
- 26. PHP : 배열에서 문자열을 에코하는 방법은 무엇입니까?
- 27. MySQL에서 Latin1에서 utf8로 변환
- 28. iPhone에서 JSON으로 UTF8 문자를 디코딩하는 방법은 무엇입니까?
- 29. URL에서 "\ u0026"을 디코딩하는 방법은 무엇입니까?
- 30. simplejson을 사용하여 다음 데이터를 디코딩하는 방법은 무엇입니까?
문자열 기능 – Rella