문제

저는 고객이 크로아티아와 슬로베니아어로 번역 한 사이트에서 일하고 있습니다. 기존 URL 패턴을 유지하면서 URL에 많은 비 ASCII 샤라사가있는 응용 프로그램 레이아웃을 모방하는 URL 재 작성 규칙을 생성했습니다.

예 Š ž č

일부 링크는 geturl을 사용하여 플래시에서 트리거되며 일부는 표준 HTML 링크입니다. 일부는 프로그래밍 방식의 응답입니다. 일부는 301 상태 코드와 위치 헤더를 응답에 추가하여 저장된 방향과 일부는 응답입니다. IE6, IE7 및 Firefox 3에서 테스트하고 있으며 InternitMtly에서 브라우저에는 비 라틴 chars URL이 인코딩 된 URL이 표시됩니다.

š = %c5%a1
ž = %c5%be
č = %c4%8d

나는 이것이 IIS와 관련이 있고 응답을 처리하는 방식이라고 생각합니다. Redirect and AddHeader ( "위치 ...

IIS가 URL을 인코딩하지 않도록하는 방법을 아는 사람이 있습니까?

감사

도움이 되었습니까?

해결책

당신이 자신에게 물어보십시오 진짜 URL이 아닌 인코딩을 원합니다. 설치된 문자를 지원하지 않는 사용자가 등장하면 어떻게됩니까? 나는 전혀 모르지만 내 사이트의 많은 부분을 세계 컴퓨터의 많은 부분에서 사용할 수 없게 만들 위험을 감수하고 싶지 않습니다 ...

대신 집중하십시오 이 기능이 필요합니다. URL을 멋지게 보이게 하는가? 그렇다면 ž 대신 일반 z를 사용하면 괜찮습니다. 사용자 입력에 URL을 사용하십니까? 그렇다면 URL을 구문 분석하기 전에 모든 것을 출력하여 출력을 연결하고 입력을 사용하기 전에 URL-DECODE를 사용하십시오. 그러나 URL에 ž 및 기타 지역 문자를 사용하지 마십시오 ...

참고로, 스웨덴에는 Å, ä 및 Ö가 있지만 URL에는 아무도 사용하지 않습니다. 브라우저는 URL을 지원하지 않기 때문에 A, A 및 O를 사용합니다. 이것은 사용자를 놀라게하지 않으며 URL에 Å의 링이 누락 되었기 때문에 우리가 목표로하는 단어를 이해할 수없는 사람은 거의 없습니다. 텍스트는 여전히 페이지에 올바르게 표시됩니다. ;)

다른 팁

누구든지 IIS가 URL 인코딩을 강요하는 방법을 알고 있습니까?

URL 인코딩해야합니다. HTTP 헤더에 RAW 'Š'( xc5 xa1)을 전달하는 것은 유효하지 않습니다. 브라우저는 '%C5%A1'까지 오류를 수정할 수 있지만, 그렇다면 처음에 '%C5%A1'을 작성한 경우 결과는 다르지 않습니다.

링크에 RAW 'Š'를 포함하는 것은 잘못된 것이 아닙니다. 브라우저는 IRI 사양에 따라 UTF-8 및 URL 인코딩으로 인코딩해야합니다. 그러나 이것이 실제로 작동하는지 확인하려면 링크가있는 페이지가 UTF-8 인코딩 된 상태로 제공되어야합니다. 다시 말하지만, 수동 URL 인코딩이 가장 안전 할 것입니다.

UTF-8 URL에 문제가 없었습니다. 작동하지 않는 예제에 연결할 수 있습니까?

유효한 HTTP 헤더로 구성된 내용을 자세히 설명하는 참조 링크가 있습니까?

정식으로, RFC 2616. 그러나 실제로는 다소 도움이되지 않습니다. 중요한 구절은 다음과 같습니다.

*텍스트의 단어에는 RFC 2047의 규칙에 따라 인코딩 된 경우에만 ISO-8859-1 이외의 문자 세트의 문자가 포함될 수 있습니다.

문제는 RFC 2047의 규칙에 따르면 '원자'만이 2047 '인코딩 된 단어'를 수용 할 수 있다는 것입니다. 텍스트는 대부분의 상황에서 HTTP에 포함되어 있으며 원자가되기 위해 고안 될 수 없습니다. 어쨌든 RFC 2047은 RFC 822 가족 형식을 위해 명시 적으로 설계되었으며 HTTP는 822 형식과 비슷해 보이지만 실제로는 호환되지 않습니다. 미묘하지만 상당한 차이가있는 고유 한 기본 문법이 있습니다. HTTP 사양에서 RFC 2047에 대한 언급은 일관된 방식으로 해석 할 수있는 방법에 대한 단서를 제공하지 않으며, 내가 아는 사람이라면 누구나 해결할 수있는 한 실수입니다.

어쨌든 실제 브라우저는 HTTP 처리의 어느 곳에서나 인코딩하는 RFC 2047을 해석하는 방법을 찾으려고 시도하지 않습니다. 비 ASCII 바이트는 RFC 2616에 의해 ISO-8859-1로 정의되지만 실제로 브라우저는 HTTP를 처리 할 때 다양한 장소에서 여러 다른 인코딩 (UTF-8 또는 시스템 기본 인코딩이 무엇이든)를 사용할 수 있습니다. 헤더. 따라서 8859-1 캐릭터 세트에도 의존하는 것은 안전하지 않습니다! 어쨌든 당신에게 'Š'를 준 것은 아닙니다 ...

해당 문자는 URL에서 유효해야합니다. 나는 큰 여행 사이트에서 URL SEO 물건을했는데 그때를 배웠습니다. Diacritics를 ASCII로 강요하면 조심하지 않으면 단어의 의미를 변경할 수 있습니다. 그들의 맥락에서만 디아크리닉이 존재하기 때문에 종종 번역이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top