2011-02-10 2 views
3

JDBC와 ODBC를 모두 사용하여 연결하는 Oracle 11 데이터베이스가 있습니다. JDBC는 잘 작동하지만 ODBC에서는 SELECT의 모든 폴란드어가 모두 ą ->a, Ó ->O 등으로 바뀝니다. 응용 프로그램과 odbc 모듈을 사용하는 간단한 Python 프로그램으로 테스트했습니다.Oracle ODBC : SELECT 결과에서 국가 별 문자가 라틴어로 변경되는 이유

    : -

    ZAMOŚĆ - by JDBC 
    ZAMOSC - by ODBC 
    

    내 환경 : : :

    DB 서버 64 비트 생산

    클라이언트 기계 오라클 데이터베이스 11g 릴리스 11.2.0.1.0 데이터베이스에서 같은 값으로 반환됩니다

  • Windows Server 2008 R2 64 비트
  • 32 비트 및 64 비트 버전의 Oracle 클라이언트는 c:\Oracle\Ora1120_32bit 및입니다. 나는 모든 로케일 폴란드/폴란드어로 설정되어 있는지 생각 11.02.00.01

,하지만 그들은 SET 명령 행 유틸리티에 의해 볼 수 없습니다 :로

  • ODBC 관리자는 오라클 드라이버 버전을보고합니다.

    폴란드어 문자를 라틴어로 번역하는 데 ODBC 또는 환경 설정이 어떤 책임이 있습니까?

  • +0

    NLS_LANG의 값은 무엇입니까? 윈도우에 있기 때문에 레지스트리에 설정되어 있습니다 (아마 HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> YOUR_HOME -> NLS_LANG) –

    답변

    4

    두 경우 모두 클라이언트 문자 집합의 값이 같지 않을 것으로 생각됩니다. 당신은 당신의 NLS_LANG 설정 값을 확인할 수 있습니다 Windows에서 때문에, 그것은 레지스트리에 설정해야합니다

    • (아마 HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> YOUR_HOME -> NLS_LANG)
    • 당신에게 ' 이 방법으로 문제가 해결되지 않는다는 것을 알았지 만 NLS_LANG 환경 변수를 추가하면 효과가있었습니다!
    +1

    예,'NLS_LANG'가 레지스트리에서 (AMERICAN_AMERICA.WE8MSWIN1252) 32 비트는 64 비트). 나는 레지스트리 설정을 'POLISH_POLAND.EE8MSWIN1250'으로 바꿨지 만 컴퓨터를 재시작했지만 도움이되지 않았습니다. 그런 다음 컴퓨터 환경에'NLS_LANG = POLISH_POLAND.EE8MSWIN1250'을 추가하면 도움이됩니다. 이 시스템은 Oracle 클라이언트가 설치 될 때 미국 로케일로 구성되었습니다. –

    관련 문제