NLS 문자 인코딩이 다른 몇 개의 데이터베이스가 있습니다. 하나는 AL32UTF8
(UTF-8)을 사용하고 다른 하나는 WE8MSWIN1252
(Windows 1252)을 사용합니다. 예, 이것은 나쁘다. 그리고 나는 똑같은 것들을 똑바로 나오도록 밀어 붙일 것이다. 그 동안 비 ASCII 문자가 포함 된 SQL을 작성해야합니다. 예를 들어 유니 코드에서 U+00E1
인 á을 사용해야합니다. UTF-8에서는 16 진수 값 0xC3A1
으로 표시되며 Windows 1252에서는 16 진수 값 0x00E1
으로 표시됩니다.단일 문자 코드에서 비 ASCII 문자 얻기
이 그래서 내가 UTF-8 데이터베이스에서 원하는 걸 수 있습니다. (즉, 그 바이트 값입니다) :
SELECT CHR(TO_NUMBER('C3A1', 'xxxx')) FROM DUAL;
을 그리고 이것은 내가 윈도우 1252 데이터베이스에서 원하는 걸 제공합니다 :
SELECT CHR(TO_NUMBER('00E1', 'xxxx')) FROM DUAL;
오라클이 올바른 인코딩으로 변환하고 변환 할 수있는 방법을 찾지 못하는 것 같습니다. 나는 내가 어떤 표현을 사용하는지 신경 쓰지 않는다. 두 스크립트 모두에서 동일한 스크립트를 실행해야하므로 한 개의 16 진수 값만 사용하려고합니다. 어떻게해야합니까?
Oracle 11g를 사용하십시오. (불행하게도, 하나는 11.1이고 다른 하나는 현재 11.2입니다.)
오, 이런. 이것은 나올 해킹 된 쓰레기보다 훨씬 낫습니다. 고맙습니다! 필자의 이해를 확인하기 위해 이스케이프 된 유니 코드 코드 포인트를 포함 할 수있는 ASCII 문자열을 전달하여 UNISTR을 사용합니다. 그런 다음 국가 인코딩으로 문자열을 출력합니다. 그 맞습니까? – jpmc26
예 (예 :'UNISTR ('abc \ 00E1xyz')' – Rimas