2016-10-24 2 views
0

Winform 응용 프로그램에서 관리되지 않는 Oracle에서 관리되는 Oracle로 전환했으며 세부 사항 하나만 제외하면 모든 것이 올바르게 작동합니다. 문자열 "≤"을 데이터베이스에 저장 한 다음 다시 검색하려고하면 "="이 다시 나타납니다. 그것은 nvarchar로 저장되며 실제로 Toad를 통해 "≤"으로 저장되었음을 알 수 있습니다. 관리되지 않는 데이터 액세스를 실행할 때 "NLS_LANG = SWEDISH_SWEDEN.WE8MSWIN1252"을 사용했지만 관리되는 드라이버에서는 지원되지 않는다고 말할 수 있습니다. 관리되는 드라이버는 .NET 로켈을 사용하고 코드 페이지는 1252으로 설정되어 있습니다. 누구든지 이것을보고 어쩌면 해결책을 찾았습니까?관리되는 Oracle 액세스, "≤"에 대한 지원

답변

0

ODP.NET Managed Driver는 민감하지 않으므로 NLS_LANG입니다. .NET 로케일 만 구분합니다.

그러나 TOAD는 ODP.NET Managed Driver를 사용하지 않으므로 NLS_LANG을 올바르게 설정해야합니다. .WE8MSWIN1252으로 설정 한 경우 옵션 -> 파일 -> 일반 -> 기본 인코딩을 ANSI으로 설정해야합니다. "저장"대화 상자에서 ANSI를 설정하십시오.

+1

예, 알고 있습니다. Toad는 올바른 문자열 "≤"을 표시하지만 관리되는 응용 프로그램은 그렇지 않습니다. – Martin

+0

사실 Windows CP1252에서는 '≤' 문자가 지원되지 않습니다. [Windows-1252] (https://en.wikipedia.org/wiki/Windows-1252#Code_page_layout)를 참조하십시오. NET 로케일을 유니 코드 (예 : UTF-8)로 설정하려고 시도했습니다. –

+0

[Oracle Community] (https://community.oracle.com/thread/2610675?start=15&tstart=0)에서이 토론을 확인하십시오. 기본적으로 그들은 말합니다 : 그것은 불가능합니다, 관리되지 않는 드라이버를 사용하십시오. 나는 당신의'NLS_NCHAR_CHARACTERSET'이'AL16UTF16' (당신이'NVARCHAR2'를 사용할 때)의 데이터 타입을 "일반적인 것이 아닌"것으로 간주 할 수 있다고 가정합니다. –