2010-12-29 7 views
1

나는 이것에 붙어 있습니다. 나는 자바 또는 오라클 전문가가 아니므로 자세한 답변을주십시오 :)오라클 + 삽입 중에 자바 인코딩 문제가 발생했습니다.

저는 DB에 무엇인가를 삽입하는 웹 서비스가 있습니다. 웹 서비스는 축상에서 호스팅됩니다. DB를 다음 속성을 가진 오라클입니다 :

NLS_LANGUAGE AMERICAN 
NLS_TERRITORY AMERICA 
NLS_CHARACTERSET ZHS16GBK 

웹 서비스는 윈도우 서버 2008, 영어 버전에서 호스팅되지만 삽입 인코딩을 한 후 내가 중국어

에 이제 데이터를 시스템의 로케일을 변경 한 문제와 같은 이상한 문자를 보여줍니다 ????, exxk ??

jws 파일에 GBK 인코딩이 있습니다. DB에 삽입 된 데이터는 파일에 하드 코딩되어있다. [우리가 요청에서 그것을 읽지 않는다]

[편집] 한 가지만, 전체 DB를 utf-8로 변경할 수 없다. 그것은

기계 일을 더 명확하게 두 개의 소스에서 데이터를 수용 할 수

[더 편집] 테이블의 많은 데이터가 있습니다. 기본적으로 그것은 우리의 가입 된 사용자에게 sms/mms를 보내고받는 데 사용됩니다. 주로, 모든 운영체제가 GBK로 처리되는 GSM 운영자 제어 센터에서 작동합니다. 한편, 기계는 사용자에게 SMS/mms를 보내기 위해 웹 사이트의 요청을 받아들입니다. 여기서 인코딩은 UTF-8로 처리됩니다. 웹 사이트가 사용자에게 SMS를 보내길 원한다면이 컴퓨터에서 웹 서비스를 호출하여 db에 데이터를 삽입합니다 [여기에 문제가 있습니다]. Windows 서비스는 지속적으로 DB를 검사하고 sms/mms를 보내는 새로운 요청을 발견하면 sms/mms를 보내고 레코드를 삭제합니다.

Windows 2003의 중국어 버전이 있기 때문에 모든 것이 이전 컴퓨터에서 제대로 작동했습니다. 새 서버로 업그레이드하고 Windows 2008 서버 영어 버전을 설치했습니다. 이제 웹 서비스가 DB에 삽입 된 후에 데이터가 왜곡됩니다.

+0

당신은 더 나은 데이터가이 처리 된 곳으로, 오는 곳에서 전체 처리 파이프 라인을 표시 할 수 있습니다, 그것은 저장 어디에 마지막으로이 조사 어떻게합니다. 나는 웹 서비스의 역할이 무엇인지는 알 수 없다. 파이프 라인의 어느 시점에서 데이터가 여전히 괜찮은지 알려주실 수 있습니까? 자바와 오라클 모두 인코딩과 문자셋에 대해 알고 있고 변환 할 수 없다면 불평하기 때문에 삽입 자체가 문제가 될지 의심 스럽다. – Codo

답변

1

문자 집합을 UTF8로 만듭니다.

+0

실현 가능한 옵션이 아닙니다. 너무 많은 테이블과 너무 많은 데이터가 있습니다 ... 자동화 할 수있는 모든 도구가 있습니까? – Ahmad

0

또한 UTF8을 데이터베이스 charset으로 선택하는 것이 좋습니다.

Java는 기본적으로 UTF16 인코딩을 사용하기 때문에주의하십시오. 을 사용하여 '하여 file.encoding'플래그를 자바에서 사용하는 기본 인코딩을 설정하려면 :

자바 -Dfile.encoding = UTF8 ...

나는 ZHS16GBK 문자 집합에 대해 들어 본 적이 있지만하지 않는 것 자바에서 지원하는 :

http://download.oracle.com/javase/1.4.2/docs/guide/intl/encoding.doc.html

+1

@arnaud - 자바는 항상 UTF-16 문자열을 사용하고'file.encoding'을 설정합니다 (절대 수행해서는 안 됨). I/O의 기본 트랜스 코딩 인코딩은 플랫폼에 따라 다릅니다. ZHS16GBK는 중국어 간체로 Java에서 지원됩니다. UTF-8을 사용하면 동의 할만한 것입니다. – McDowell

+0

@McDowell - 음, 파일, 소켓 등에서 UTF-8을 올바르게 읽거나 쓰려면 가장 직접적인 방법입니다. 호기심에서 왜 그렇게 나쁠까요? ... 예, 여러 인코딩 유형을 동시에 처리하려는 경우를 제외하면 ZHS16GBK가 지원되는 인코딩 목록에 나타나지 않는 이유는 무엇입니까? – dagnelies

+0

@arnaud - RE'file.encoding' : _ "file.encoding"속성은 J2SE 플랫폼 사양에서 필요하지 않습니다. Sun의 구현에 대한 내부적 인 내용이므로 사용자 코드로 검사하거나 수정해서는 안됩니다. 읽기 전용이기도합니다. 이 속성의 설정을 명령 줄에서 또는 프로그램 실행 중에 다른 임의의 값으로 지원하는 것은 기술적으로 불가능합니다 ._ http://bugs.sun.com/view_bug.do?bug_id=4163515 당신도 할 수 있습니다. 운이 좋을지도 몰라. – McDowell

관련 문제