HTTP 사양에 따라 권장되는 문자 인코딩은 UTF-8
이므로 그 결과를 얻는 이유는 무엇입니까? 귀하의 코드는 RFC2616의 약간 알려진 동작에 의존 할 수 있습니다. 즉, 인코딩이 없다면 ISO-8859-1
이라고 가정합니다. 나중에 달리 명시되지 않는 한 어디서나 RFC7231에 RFC 7231에 명시된대로 폐기됩니다.
매개 변수를 구문 분석 할 때 다른 인코딩을 원할 경우 요청 개체에서 추출 할 때 설정하거나 UTF8을 사용하십시오.
예는 :
/* will decode all parameters, header values, and content as ISO-8859-1 */
request.setCharacterEncoding(StandardCharsets.ISO_8859_1.name());
String actual = request.getParameter("body");
System.out.println("\"" + actual + "\"");
/* output on console of : " »= " */
/* that's a RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK followed by an EQUALS */
당신이의 UTF8
동등한를 사용하려면
다음
use %C2%BB%3D
옵션 # 2, 사후 원시 매개 변수를 디코딩.
String raw = request.getParameter("body");
byte[] bytes = raw.getBytes(StandardCharsets.ISO_8859_1); // decode
String actual = new String(bytes, StandardCharsets.UTF_8);
업데이트 # 1 : 2013 - 10 월 03
당신이 US-ASCII
가 올바른 설정할 때보고 된 결과.
값 %bb
은 US-ASCII의 7 비트 제한을 초과하므로 대체 문자로 표시됩니다.
예 자바 :
// as us-ascii
String decoded = URLDecoder.decode("+%bb%3d+",StandardCharsets.US_ASCII.name());
System.out.printf("Decoded: '%s'%n",decoded);
업데이트 # 1 : 2013 - 10 월 03 GSM 문자 집합에 대해서는
, 내가 찾을 수있는 내장으로 GSM의 자바 지원 문자 세트를 사용하려면 Charsets, Encoding 등에서 뼈대를 만들고 싶다면 UTF-8 또는 ISO-8859-1을 사용하는 Java 용 타사 라이브러리를 살펴보십시오. 50 개의 발표 된 GSM 문자셋 중 하나로 번역 할 수 있습니다.(단 1 GSM 문자셋 지정의)
예 :
http://embeddedfreak.wordpress.com/2008/10/08/java-gsm-0338-sms-character-set-translator/
또는 당신은 (문자로)를 online UTF-8 Tool로 팝업, 원하는 UTF-8 문자를 발견하고 그것을 역 추적 할 수 있습니다 당신이 사용하는 16 진 코드 포인트.
요청에 어떤 문자 인코딩을 사용하고 있습니까? 어떤 문자 인코딩을 사용 하시겠습니까? –
예상되는 문자는 ASCII 문자입니다. curl에 다음 헤더를 추가합니다. Content-Type : application/x-www-form-urlencoded; charset = US-ASCII. – Ernie
내게 더 명확하게 알리자, 나는 늘어진 gsm 문자 또는 그리스 문자를 기대한다. – Ernie