NLS_NCHAR_CHARACSET과 NLS_CHARACSET for Oracle 간의 차이
사이의 차이점을 알고 싶습니다.NLS_NCHAR_CHARACTERSET
그리고.NLS_CHARACTERSET
Oracle 설정?
제가 알기로는NLS_NCHAR_CHARACTERSET
을 위한 것입니다.NVARCHAR
데이터 유형 및 대상NLS_CHARACTERSET
VARCHAR2 데이터 유형용입니다.
현재 설정된 개발 서버에서 테스트하려고 했습니다.CHARACTERSET
다음과 같습니다.
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET US7ASCII
그런 다음 데이터베이스에 한자 값을 몇 개 삽입했습니다.라는 표에 문자를 삽입했습니다.data_<seqno>
다음에 대한 열을 업데이트했습니다.ADDRESS
그리고.ADDRESS_2
어느 쪽이VARCHAR2
열현재 설정에 대한 제 이해로는 그렇습니다.NLS_CHARACTERSET
US7ASCII
한자는 지원되지 않아야 하지만 여전히 데이터베이스에 표시됩니다.한다NLS_NCHAR_CHARACTERSET
이것보다 우선입니까?
감사해요.
일반적으로 당신의 모든 요점은 정확합니다.NLS_NCHAR_CHARACTERSET
다음에 대한 문자 집합을 정의합니다.NVARCHAR2
기타. 예를 들어 열 반면에NLS_CHARACTERSET
에 사용됩니다.VARCHAR2
.
왜 당신이 한자를 보는 것이 가능합니까?
US7ASCII
?
그 이유는 데이터베이스 문자 집합과 클라이언트 문자 집합입니다(예: 참조).NLS_LANG
값)는 둘 다입니다.US7ASCII
데이터베이스에서 사용하는 항목US7ASCII
클라이언트가 데이터를 전송할 때는 다음을 사용합니다.US7ASCII
따라서 문자열을 변환하지 않고 데이터가 클라이언트에서 서버로 비트 단위로 전송되며 그 반대도 마찬가지입니다.
이로 인해 실제로 지원되지 않는 문자를 사용할 수 있습니다.US7ASCII
클라이언트가 다른 문자 집합을 사용하는 경우(예: ODP를 사용하는 경우)에 주의하십시오.윈도우즈 응용 프로그램의 NET Managed Driver) 데이터는 쓰레기입니다!또한 데이터베이스 문자 집합 마이그레이션을 고려할 경우에도 동일한 문제가 발생합니다.
다른 참고 사항:예를 들어 데이터베이스와 클라이언트가 모두 사용하는 경우와 같이 다른 문자 집합에서 동일한 동작을 사용하지 않을 것이라고 생각합니다.WE8ISO8859P1
예를들면.또한 실제로 잘못된 구성을 가지고 있습니다.데이터베이스에서 문자 집합 사용US7ASCII
,당신의.NLS_LANG
가치 또한US7ASCII
(아마도 전혀 설정되어 있지 않고 Oracle 기본값은 다음과 같습니다.)US7ASCII
SQL*Plus의 실제 문자 집합, resp.당신의.cmd.exe
터미널은 CP950 또는 CP936일 가능성이 높습니다.
모든 것을 올바르게 설정하려면 환경 변수를 설정할 수 있습니다.NLS_LANG=.ZHT16MSWIN950
(CP936은 Oracle에서 지원되지 않는 것으로 보임) 또는 실행하기 전에 코드 페이지를 변경합니다.sqlplus.exe
을 chcp 437
이 올바른 설정을 사용하면 예상했던 것처럼 중국어 문자를 볼 수 없습니다.
언급URL : https://stackoverflow.com/questions/36710360/difference-between-nls-nchar-characterset-and-nls-characterset-for-oracle
'programing' 카테고리의 다른 글
DOM에 HTML 문자열 추가 (0) | 2023.07.24 |
---|---|
괄호가 없는 "raise exception()"과 "raise exception"의 차이점이 있습니까? (0) | 2023.07.24 |
MariaDB Left join이 예상 결과를 반환하지 않음 (0) | 2023.07.24 |
업데이트 쿼리의 SQL 트리거에 오류가 있습니다. (0) | 2023.07.24 |
Prepared Statement에서 매개 변수 설정이 작동하지 않음 (0) | 2023.07.24 |