문자열의 URL 안전 버전을 만들려고합니다.
URL에 ASCII 전용 '굼벵이'를 사용하는 것이 일반적이지만 비 ASCII 문자를 포함한 웹 주소를 가질 수 있습니다. 예 :
http://en.wikipedia.org/wiki/Medúlla
이것은 유효한 IRI입니다.U RI에 포함를 들어, UTF-8해야하며, % 그것을 -encode : (때로는하지 IE 제외)
http://en.wikipedia.org/wiki/Med%C3%BAlla
어느 쪽이든, 대부분의 브라우저 주소 표시 줄에 IRI 버전을 표시합니다 . Wikipedia와 같은 사이트에서는이를 사용하여 예쁜 주소를 얻습니다.
변환 기능은 ú 문자
무엇 변환 기능을 표시하지 않는 이유는 무엇입니까? rawurlencode()
은 ú
에 대해 %C3%BA
을 올바르게 吐 去합니다. 아마도 UTF-8 인코딩을 사용하는 경우 일 것입니다. 이것은 URL의 경로 구성 요소에 텍스트를 포함하는 올바른 방법입니다. (urlencode()
도 같은 결과를 얻을 수 있지만 쿼리 구성 요소에 사용되어야한다.)
당신이 htmlentities()
을 의미하는 경우 ... 하지 사용이 기능을한다. 모든 비 ASCII 문자를 HTML 문자 참조로 변환하므로 출력이 불필요하게 커져서 전달할 문자열의 인코딩이 무엇인지 알아야합니다. UTF-8 $charset
인수를 지정하지 않으면 ISO-8859-1을 사용하므로 모든 비 ASCII 문자가 엉망이됩니다.
비 ASCII 문자를 변조하는 환경을 특별히 제작하지 않는 한 htmlspecialchars()
을 사용하는 것이 더 좋습니다. 이것은 작은 출력을 제공하며 $charset
인수를 포함하는 것을 잊었을 때 변경된 모든 문자가 <
및 &
과 같은 문자이기 때문에 중요하지 않습니다 (*).
(실제는 <
이 멀티 바이트 시퀀스의 일부일 수 있으므로 이스케이프해서는 안되는 동아시아 멀티 바이트 문자 세트의 경우 중요 할 수 있습니다.하지만 일반적으로 UTF-8처럼 이러한 기존 인코딩을 피하기를 원할 것입니다.)
(단순한 str_replace()
도 작동하지 않음). 당신은 PHP 소스 코드에 str_replace(..., 'ú', ...)
을 썼다면
, 당신은 그렇지 않으면 일치하지 않습니다, 당신은 당신이 취급 할 것 같은 인코딩으로 소스 코드를 저장하는지 확인해야합니다.
대부분의 Windows 텍스트 편집기는 여전히 UTF-8을 사용하는 대신 로캘별로 특수한 "ANSI"코드 페이지를 저장한다는 것은 불행한 일입니다. 그러나 파일을 UTF-8로 저장하는 것이 가능해야하며 교체가 작동해야합니다. 또는 문제가 발생하지 않도록 '\xc3\xba'
을 작성하십시오.
우선 사용 mysql_set_charset()
를 조회하기 전에 데이터베이스에 SET NAMES utf8
를 실행합니다.
설명 및 수행 방법에 대한 예는 http://stackoverflow.com/questions/3371697/replacing-accented-characters-php를 참조하십시오. – MvanGeest