이 코드 스텁이 제공자바에서는 URLEncode는 다른 결과
p=指甲油
p=%E6%8C%87%E7%94%B2%E6%B2%B9
을하지만 명령 줄에서 동일한 코드를 실행할 때, 나는 다음과 같은 수 출력 :
p=指甲油
p=%C3%8A%C3%A5%C3%A1%C3%81%C3%AE%E2%89%A4%C3%8A%E2%89%A4%CF%80
무엇이 문제 일 수 있습니까?
이 코드 스텁이 제공자바에서는 URLEncode는 다른 결과
p=指甲油
p=%E6%8C%87%E7%94%B2%E6%B2%B9
을하지만 명령 줄에서 동일한 코드를 실행할 때, 나는 다음과 같은 수 출력 :
p=指甲油
p=%C3%8A%C3%A5%C3%A1%C3%81%C3%AE%E2%89%A4%C3%8A%E2%89%A4%CF%80
무엇이 문제 일 수 있습니까?
Mac에서 터미널에서 Mac OS 로마 인코딩을 사용하고있었습니다. 이러한 한자는 Java로 보내기 전에 UTF-8 인코딩 대신 Mac OS 로마 인코딩을 사용하여 잘못 해석됩니다. 증거
는 그 한자 바이트 이하의 (16 진수)의 UTF-8 인코딩 존재한다指
= 0xE6 0x8C 0x87甲
= 0xE7 0x94 0xB2油
= 0xE6 0xB2 0xB9그런 다음 Mac OS Roman codepage layout을 확인하십시오. 그 (16 진수) 바이트는 th 전자 다음과 같은 문자 :
Ê
å
á
Á
î
≤
Ê
≤
π
함께 넣어 및 URL UTF-8을 사용하여 인코딩하십시오.
System.out.println(URLEncoder.encode("指甲油", "UTF-8"));
인쇄물을 확인하십시오. %C3%8A%C3%A5%C3%A1%C3%81%C3%AE%E2%89%A4%C3%8A%E2%89%A4%CF%80
터미널에서 UTF-8 인코딩을 사용하는 Mac을 말해, 당신의 문제를 해결하려면. 솔직히, 나는 맥을하지 않기 때문에 머리 부분에서 그 부분에 대답 할 수 없다. 이클립스 인코딩 설정은 완벽하지만, 경우에 따라 창> 환경 설정> 일반> 작업 공간> 텍스트 파일 인코딩을 통해 구성 할 수 있습니다.
업데이트는 :
이 변수가 대신 텍스트 파일에서 발생하는 경우 내가
텍스트 파일에서 값을 읽고있다 : 나는 코멘트를 놓친 명령 줄 입력 —에서 처음에 —을 예상 했으므로 문제를 다르게 해결해야합니다. 분명히, 당신과 같이 런타임 환경의 디폴트의 문자 인코딩을 사용하는 것을위한
Reader
구현을 사용했다 :Reader reader = new FileReader("/file.txt"); // ...
는 대신 독자를 만들 때 명시 적으로 원하는 인코딩을 지정해야합니다.
InputStreamReader
생성자를 사용하면됩니다.Reader reader = new InputStreamReader(new FileInputStream("/file.txt"), "UTF-8"); // ...
이 명시 적으로 UTF-8 대신
Charset#defaultCharset()
하여 사용할 수와 같은 런타임 환경의 기본 인코딩을 사용하여/file.txt
을 읽을 자바를 말할 것이다.System.out.println("This runtime environment uses as default charset " + Charset.defaultCharset());
이 코드에 'value'가 어떻게 전달됩니까? – MattR
결과를 재현 할 수 없습니다. 난 그냥 Eclipse에서와 같은 명령 줄에서 동일한 출력을 얻을. –
플랫폼 관련 문제 일 수 있습니다. Mac에서 이런 일이 발생했기 때문입니다. 하지만 그것은 내 리눅스 박스에서 발생하지 않습니다. – Arun