2013-06-03 2 views
0

텍스트 상자와 버튼이 있습니다.こ ん に ち는 텍스트 상자에 일본어 문자를 입력하고 있습니다.자바에서 일본어 문자가 제대로 표시되지 않습니다.

버튼을 클릭하면 이메일이 텍스트 상자의 텍스트와 함께 전송됩니다.

그러나 이메일을 수신하면 일본어 문자 대신 일부 정크 문자가 표시됩니다.

아무도 왜 이것이 일어나고 있는지 말해 줄 수 있습니까?

미리 감사드립니다.

+0

는 당신이 인코딩을 사용하고 아십니까 시도 할 수 있다면? – asteri

+0

메시지 본문을 만드는 데 사용하는 코드 표시 – fge

+0

String str = myEntity.getTextBoxValue(); StringBuilder strb = new StringBuilder(); strb.append (str); return strb.toString(); – user2448398

답변

1

유니 코드와 같이 일본어 문자를 지원하는 문자 집합을 사용해야합니다. String 객체를 생성 할 때

예를 들어

, 당신은 문자 인코딩을 지정할 수 있습니다 오버로드 된 생성자가 : 바이트 문자열을 변환 할 때 또한

byte[] utf8Characters = { /* UTF-8 encoded characters */ }; 
String s = new String(characters, "UTF-8"); // Decode bytes using UTF-8. 

(즉 데이터를 스트리밍 할 때) 다음을 사용할 수 있습니다

byte[] utf8EncodedBytes = s.getBytes("UTF-8"); // Encode to UTF-8. 

문자 인코딩을 지정하지 않으면 필요한 문자를 지원하지 않는 일부 문자 세트가 기본값으로 사용됩니다.

Java Doc : "기본 문자 집합은 가상 시스템을 시작하는 동안 결정되며 일반적으로 기본 운영 체제에서 사용되는 로캘과 charset에 따라 다릅니다." 정말 확실

+0

Hello snipes83, 답장을 보내 주셔서 감사합니다. 제안한대로 시도했지만 여전히 정크 문자를보고 있습니다. 나는 바이트 [] b = myEntity.getTextBoxValue(). getBytes ("UTF-8"); 문자열 값 = 새 문자열 (b, "UTF-8"); System.out.println (value); // π ?? π ?? π? ¬π ??을 출력합니다. 문자 – user2448398

+0

@user2448398 myEntity.getTextBoxValue()에 의해 주어진 문자열을 인쇄 할 때 프로그램에서 쓰레기를 준다면 문제는 아마도 myEntity가 charset 인코딩을 처리하는 방법 일 것입니다. myEntity는 무엇을 나타 냅니까? – Snps

+0

그냥 텍스트 상자에 입력 된 값을 보유하고 있습니다. 공용 클래스 MyEntity {개인 문자열 textBoxValue; // getter, setter of this}. – user2448398

0

메신저하지 당신은 자바 서블릿을 사용하지만, 당신이 할 경우, 당신은이

request.setCharacterEncoding("UTF-8"); 
관련 문제