2012-10-19 9 views
1

UTF-8 문자 é 및 ú가 포함 된 URL을 몇 가지 이름으로 보내면이 문자는 PHP 함수 rawurlencode로 인코딩됩니다. 생성 된 URL이 생성되면 XML 데이터를 반환하는 Java 웹 서비스에 대한 CURL 요청에 전달됩니다.URL에 UTF-8 문자를 전달하는 PHP CURL

Chébé라는 단어의 인코딩 예제는 Ch % C3 % A9b % C3 % A9로 웹 서비스로 전송되며 이는 내가 알 수있는 표준 형식입니다. 또한 htmlentities 함수를 사용하여 문자열을 엔티티로 변환 한 다음 rawurlencode로 문자열을 인코딩했습니다.

일치하는 쿼리가 명백한 XML 이유로 엔티티 양식에있는 예제 내의 항목 이름입니다.

제 질문은 요청할 때 웹 서비스가 500 내부 오류로 실패한 것 같습니다. 다른 모든 문자열은 괜찮습니다. UTF-8 문자의 영향을받습니다. Ch éb é과 같은 엔티티 형식의 브라우저에서 URL을 전달하면 서비스가 결과로 응답하지만 브라우저 URL 인코딩 된 양식을 전달할 때도 실패합니다. 내가 여기서 뭔가를 놓치고 있니?

답변

0

Google은 동일한 방식으로 인코딩합니다. q = Ch % C3 % A9b % C3 % A9 ... 맞습니다. 핸들러에서 뭐하고 있니? Base64는 핸들러 서비스를 제어한다고 가정하고 다른 모든 것이 실패 할 경우 인코딩합니다 ...

+0

핸들러는 인코딩 된 URL을 받아 java.net.URLDecoder.decode (url, "UTF-8")로 디코딩합니다. 나는 자바 소스를 제어하지 않는다. base64 인코딩에 대해 생각해 봤지만 서비스는 그것을 처리하도록 프로그래밍되지 않았습니다. 예를 들어'Ch é b é'로 Chébé 인코딩을 시도한 다음'Ch % 26 % 23233 % 3Bb % 26 % 23233 % 3B'를 전달했지만 아무 결과도 반환하지 않습니다. –

+0

비 ASCII 문자에 문제가 있다고 생각합니다. 나는 당신이 이것에 대해 무엇을 할 수 있는지 모른다. 가능한 경우 악센트 부호가있는 문자를 깨끗한 변형으로 바꾸는 것 (유니 코드를 가능한 한 표준화하려면 http://www.unicode.org/charts/collation/ 여기에서 데이터 정렬을 참조하십시오). – CodeAngry

+0

감사합니다. 나는 네가 제안한 것을 시도 할 것이다. URL 인코딩의 요점은 비 ASCII 문자 및 URL 내의 다른 기호를 처리하는 것입니다. –

관련 문제