.영역(Territory) 별 지원
달력 설정 방법
-첫번째 요일
-첫번째 주
날짜 포맷
-05/08/10
-May.8.2005
-中華民國94年07月21日
통화 기호
-W, K., $, Dual Currency
숫자그룹
-2,0000.00
-20,000.00
-20.000,00
.영역(Territory) 별 지원
달력 설정 방법
-첫번째 요일
-첫번째 주
날짜 포맷
-05/08/10
-May.8.2005
-中華民國94年07月21日
통화 기호
-W, K., $, Dual Currency
숫자그룹
-2,0000.00
-20,000.00
-20.000,00
1 / 26
.언어(Language) 적지원캐릭터셋-KO16MSWIN949, KO16KSC5601
정렬방식-Linguistic Sorting(KOREAN M)
날짜표기에사용되는기호-month, day, day of week, year
에러메시지및번역
.언어(Language) 적지원캐릭터셋-KO16MSWIN949, KO16KSC5601
정렬방식-Linguistic Sorting(KOREAN M)
날짜표기에사용되는기호-month, day, day of week, year
에러메시지및번역
2 / 26
Example
.Example
인코딩, 디코딩Content-type in HTML, ISO-8859-1?, ISO-8859-5
이메일(웹)이????? 보여요, 글자가깨졌어요..
request.getParam( val ).getBytes( euc-kr ),
(new FileWriter( aaa.txt )).writeln( abc )
조합형한글와완성형한글?
UTF8? Unicode? ALUTF32, UCS-2, UTF16, UTF32??? UTF7 ???
Code947, i18n, L10N
?c각하, 아??
NLS-Lang?? KO16MSWIN949, KO16KSC5601
Example
.Example
인코딩, 디코딩Content-type in HTML, ISO-8859-1?, ISO-8859-5
이메일(웹)이????? 보여요, 글자가깨졌어요..
request.getParam( val ).getBytes( euc-kr ),
(new FileWriter( aaa.txt )).writeln( abc )
조합형한글와완성형한글?
UTF8? Unicode? ALUTF32, UCS-2, UTF16, UTF32??? UTF7 ???
Code947, i18n, L10N
?c각하, 아??
NLS-Lang?? KO16MSWIN949, KO16KSC5601
3 / 26
Legend Of ASCII
.왜1byte 는8bit 인가?
1byte -> 8bit -> 2^8 -> 256
2byte -> 16bit -> 2^16 -> 65536
Legend Of ASCII
.왜1byte 는8bit 인가?
1byte -> 8bit -> 2^8 -> 256
2byte -> 16bit -> 2^16 -> 65536
Legend Of ASCII
.OEM
-OEM 문자(127)
-Code Page (win98, cp437, cp949)
-DBCS( 아시아권)
.ASCII 의문제5 / 26
Legend Of ASCII
.OEM
-OEM 문자(127)
-Code Page (win98, cp437, cp949)
-DBCS( 아시아권)
.ASCII 의문제5 / 26
Myth of Unicode
.유니코드야사세계의모든문자를표현할수있는코드체계를만들자-영어알파벳몇백자, 한글1만자, 한자2만자..
-모두합쳐도6만자도안되겠네..
-BMP(Basic Multilingual Plane)
-Unicode 3.0 이하세상일은그리만만하지않다--
-한글고어, 옛한자-SP(Supplementary Planes) 를정의-1024 * 1024 = 10
ex) 한자는추가적으로약4만자유니코드콘소시엄+ 세계표준기구(ISO)
-1991 년이후동일한표준-ISO / IEC 10646
Myth of Unicode
.유니코드야사세계의모든문자를표현할수있는코드체계를만들자-영어알파벳몇백자, 한글1만자, 한자2만자..
-모두합쳐도6만자도안되겠네..
-BMP(Basic Multilingual Plane)
-Unicode 3.0 이하세상일은그리만만하지않다--
-한글고어, 옛한자-SP(Supplementary Planes) 를정의-1024 * 1024 = 10
ex) 한자는추가적으로약4만자유니코드콘소시엄+ 세계표준기구(ISO)
-1991 년이후동일한표준-ISO / IEC 10646
6 / 26
Myth of Unicode
.유니코드3.1에정의된언어영역(List of block names for Unicode Standard 3.1)
http://www.jinsuk.pe.kr/Unicode/Unicode intro-kr.html#mislead
유니코드의구조는17개의언어판으로구성-1 개의기본언어판+ 16 개의보충언어판-17 * 65536 = 114112 개-2048
Myth of Unicode
.유니코드3.1에정의된언어영역(List of block names for Unicode Standard 3.1)
http://www.jinsuk.pe.kr/Unicode/Unicode intro-kr.html#mislead
유니코드의구조는17개의언어판으로구성-1 개의기본언어판+ 16 개의보충언어판-17 * 65536 = 114112 개-2048
7 / 26
Myth of Unicode
.유니코드용어Myth of Unicode
.유니코드용어
-기본언어판
, BMP
BMP는
Basic Mulitilingual Plane 의
약자입니다
. 유니코드의
첫
65,536개의
코드를
의미합니다
.
-언어판, Plane
256x256 즉
65,536 개씩의
코드
묶음을
이릅니다
.
유니코드에서는
현재
17개의
언어판을
사용할
수
있습니다
. 모두
그룹
00에
포함됩니다
.
-언어판
그룹
, Group
256개씩의
언어판을
묶어
하나의
그룹으로
명명합니다
.
유니코드의
17개
언어판은
모두
Group 00 에
있습니다
.
유니코드는
17개의
언어판에
한정되어
정의됩니다
.
반면
ISO 표준(UCS-4) 에서는
모두
128개의
언어판
그룹이
정의될
수
있습니다
.
-1 Plane = 65,536 code points
-1 Group = 256 planes = 256x65,536 = 16,777,216 code points
-UCS-4 = 128 groups = 128x16,777,216 = 2,147,483,648 code points
8 / 26
Myth of Unicode
.유니코드용어Myth of Unicode
.유니코드용어
-인코딩, Encoding
문자집합을
표현하는
방식을
말합니다
.
유니코드는
코드체계
또는
문자집합을
명명하는
것이며
이를
표현하기
위해서는
UTF-8, UTF-16, UTF-32 등과
같은
인코딩이
필요합니다
.
UCS-2: Universal Character Set 2(octets)
좀더
정확하게는
Universal Multipe-Octet Coded Character Set 2 입니다.
ISO/IEC 10646 의
용어로
BMP의
65,536 코드를
정의하며
, 2 바이트로
표현됩니다
.
1개의
언어판
, 즉
BMP만이
이에
해당합니다
.
UCS-2 는
인코딩
방법이
아니며
문자코드
자체입니다
.
인코딩으로
봐도
무방하겠군요
.
여기서
octet 이라는
용어를
사용했는데
이
용어는
ISO 쪽에서
사용하는
용어로
,
유니코드
진영에서
사용하는
바이트와
같은
뜻입니다
UCS-4: Universal Character Set 4(octets)
ISO/IEC 10646 의
용어로
4바이트로
표현됩니다
.
모두
128개의
언어판
그룹
, 즉
128*256 언어판
= 32,768 언어판을
정의합니다
.
이는
대략
231 = 2,147,483,648 개의
코드에
해당합니다
.
UCS-4 는
인코딩
방법이
아니며
문자코드
자체입니다
.
9 / 26
Myth of Unicode
.유니코드용어Myth of Unicode
.유니코드용어
UTF-8: UCS Transformation Format, 8-bit form
Unicode 표준의
인코딩
방식중의
하나입니다
.
표준에서는
17개
언어판의
문자만을
표현할
수
있으나
기술적으로는
UCS-4 전영역의
문자를
표현할
수
있습니다
.
문자에
따라
1 ~ 4( 또는
6) 바이트로
표현됩니다
.
UTF-16: UCS Transformation Format, 16-bit form
유니코드
3.0에서는
16을
16비트로
해석한
것이
아니라
,
그룹
00의
16개
언어판이라고
써
놓았군요
.
UTF-32 의
32가
32비트를
지칭하므로
통일성을
위해
16비트로
이해하시는
게
좋습니다
.
16비트로
표현한다는
점에서는
UCS-2 와
흡사하지만
대행문자영역(Surrogates) 을
이용하여
16개의
보충
언어판
코드를
표현할
수
있는
인코딩
입니다.
대행문자영역
2개로
16개의
보충
언어판을
표현할
수
있습니다
.
UCS-2 에서는
65536개의
코드만을
정의할
수
있으나
UTF-16 에서는
1백만여자를
더
표현할
수
있습니다
.
UTF-32: UCS Transformation Format, 32-bit form
32비트
즉
4바이트로
각
문자를
표현합니다
.
이점에서
UCS-4 와
동일하지만
17개의
언어판만을
정의한다는
점에서는
UCS-4 의
부분집합으로
간주하면
됩니다
. UCS-4 와
동일하나
0x00000000 ~ 0x0010FFFF 범위만을
문자코드로
간주한다고
이해하시면
됩니다
.
10 / 26
Myth of Unicode
.유니코드인코딩Myth of Unicode
.유니코드인코딩
유니코드에서
지원하는
인코딩
방식은
UTF-8, UTF-16, UTF-32 의
세가지
방식입니다
.
UTF는
UCS Transformation Format 의
약자이며
,
뒤에
붙은
숫자는
인코딩에
사용되는
단위의
비트수를
의미합니다
.
즉
UTF8은
8비트
단위
, UTF16 은
16비트
단위
,
UTF32는
32비트
단위로
문자를
표현합니다
.
세가지
방식의
공통점이라면
16개의
보충언어판에
위치한
1,048,576개의
코드를
표현할
때는
4바이트를
사용한다는
점입니다
.
하지만
그
방식은
모두
다릅니다
.
UTF8 은
4개의
바이트로
,
UTF16은
2개의
16비트로,
UTF32는
1개의
32비트
단위로
표현합니다
.
이제
각
인코딩
방식에
대해
좀더
상세하게
설명하겠습니다
.
11 / 26
Myth of Unicode
.유니코드인코딩.UTF16
UCS-2 와거의동일합니다. 이인코딩의기본단위는16비트, 즉2바이트입니다.
대행문자영역2,048 개를제외한63,488 개의코드를문자로사용할수있으며(BMP),
대행문자영역2개의쌍을이용하여16개의보충언어판에위치한1,048,576 개의코드를표현할수있습니다.
대행문자2개의쌍으로1개의문자를인코딩한다는점에서UTF-16 의인코딩은가변적인인코딩이라고할수있겠군요.
즉기본언어판의문자는2바이트로보충언어판의문자는4바이트로인코딩됩니다.
이러한인코딩방식때문에UTF-16 에서는유니코드표준에서지원하는17개의언어판코드만표현이가능합니다.
가장유니코드다운인코딩이라고할수있겠군요:-)
UTF-16 에서는상위대행코드가나타나면반드시뒤이어하위대행코드가따라와야합니다.
UCS-2 에서는그렇지아니한점이UTF-16 과UCS-2 의차이점입니다.
Myth of Unicode
.유니코드인코딩.UTF16
UCS-2 와거의동일합니다. 이인코딩의기본단위는16비트, 즉2바이트입니다.
대행문자영역2,048 개를제외한63,488 개의코드를문자로사용할수있으며(BMP),
대행문자영역2개의쌍을이용하여16개의보충언어판에위치한1,048,576 개의코드를표현할수있습니다.
대행문자2개의쌍으로1개의문자를인코딩한다는점에서UTF-16 의인코딩은가변적인인코딩이라고할수있겠군요.
즉기본언어판의문자는2바이트로보충언어판의문자는4바이트로인코딩됩니다.
이러한인코딩방식때문에UTF-16 에서는유니코드표준에서지원하는17개의언어판코드만표현이가능합니다.
가장유니코드다운인코딩이라고할수있겠군요:-)
UTF-16 에서는상위대행코드가나타나면반드시뒤이어하위대행코드가따라와야합니다.
UCS-2 에서는그렇지아니한점이UTF-16 과UCS-2 의차이점입니다.
12 / 26
Myth of Unicode
.유니코드인코딩.UTF8
UTF-16 의문제-null byte
-> 소프트웨어재개발-저장공간의문제-> DB 설계다시-대안: UTF8
-중간바이트에서0이나타나지않도록)
-1byte 에서4byte 의가변바이트Myth of Unicode
.유니코드인코딩.UTF8
UTF-16 의문제-null byte
-> 소프트웨어재개발-저장공간의문제-> DB 설계다시-대안: UTF8
-중간바이트에서0이나타나지않도록)
-1byte 에서4byte 의가변바이트
UCS-4 UTF-8
0x00000000 -0x0000007F 0xxxxxxx
0x00000080 -0x000007FF 110xxxxx 10xxxxxx
0x00000800 -0x0000FFFF 1110xxxx 10xxxxxx 10xxxxxx
0x00010000 -0x001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0x00200000 -0x03FFFFFF
0x04000000 -0x7FFFFFFF
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
13 / 26
Myth of Unicode
.유니코드인코딩.UTF32
UTF-32 는32비트, 즉4바이트로모든유니코드문자를표현합니다.
UTF-8 과UTF-16 에대비해서고정길이인코딩이라고할수있겠군요.
4바이트단위로표현한다해서UCS-4 와동일하게볼수는없습니다.
17개의언어판만을대상으로하는UCS-4 의부분집합이라고보시면됩니다(표준상그렇습니다).
즉UTF-32 의인코딩영역은0x00000000 에서0x0010FFFF 로제한되어야합니다(이제한을무시하면UCS-4 와동일합니다).
.Byte Order Mark (ex 0x4E00 b:-, l:N)
Myth of Unicode
.유니코드인코딩.UTF32
UTF-32 는32비트, 즉4바이트로모든유니코드문자를표현합니다.
UTF-8 과UTF-16 에대비해서고정길이인코딩이라고할수있겠군요.
4바이트단위로표현한다해서UCS-4 와동일하게볼수는없습니다.
17개의언어판만을대상으로하는UCS-4 의부분집합이라고보시면됩니다(표준상그렇습니다).
즉UTF-32 의인코딩영역은0x00000000 에서0x0010FFFF 로제한되어야합니다(이제한을무시하면UCS-4 와동일합니다).
.Byte Order Mark (ex 0x4E00 b:-, l:N)
구분
Little-endian Big-endian
UTF-16 0xFFFE 0xFEFF
UTF-32 0x0000FFFE 0x0000FEFF
플랫폼
Intel, DEC/Alpha 프로세서
RISC 프로세서, Microprocessor
운영체제
MS Window, 리눅스/인텔
Unix, Mac OS
14 / 26
CAMEL PROGRAMMER
.한글한글한글…
일반텍스트?
-가가가가?
제웹사이트가깨져보여요-Content-type: text/plain; charset= utf-8
-Explorer 언어추측-언어의UCS-2
java, c++, c#
php
조합형한글vs 완성형한글-1 + 2^5 + 2^5 + 2^5
-아래한글과MS워드의싸움CAMEL PROGRAMMER
.한글한글한글…
일반텍스트?
-가가가가?
제웹사이트가깨져보여요-Content-type: text/plain; charset= utf-8
-Explorer 언어추측-언어의UCS-2
java, c++, c#
php
조합형한글vs 완성형한글-1 + 2^5 + 2^5 + 2^5
-아래한글과MS워드의싸움
15 / 26
오라클NLS
.Setup
위창은한국어저장여부하고는아무Never 절대상관이없다.
-번역된메시지-폰트-로케일정보오라클NLS
.Setup
위창은한국어저장여부하고는아무Never 절대상관이없다.
-번역된메시지-폰트-로케일정보
16 / 26
오라클NLS
.올바른캐릭터셋을선택하자올바른캐릭터셋이라함은한글을저장할수있는캐릭터셋을말한다.
정해진캐릭터셋을가지고있지않은데이터베이스에결코한글데이터를저장할수없다.
이제US7ASCII 와는헤어질때다.
-KO16KSC5601
-KO16MSWIN949
-UTF8
-AL32UTF8
오라클NLS
.올바른캐릭터셋을선택하자올바른캐릭터셋이라함은한글을저장할수있는캐릭터셋을말한다.
정해진캐릭터셋을가지고있지않은데이터베이스에결코한글데이터를저장할수없다.
이제US7ASCII 와는헤어질때다.
-KO16KSC5601
-KO16MSWIN949
-UTF8
-AL32UTF8
17 / 26
오라클NLS
.KO16MSWIN949
Windows-949 캐릭터셋은마이크로소프트사의Windows Codepage 949 번,
즉한글코드페이지를따른코드셋이다완성형(KO16KSC5601) 을그대로포함하고있으며,
추가로현대한글조합으로표현할수있는모든가짓수에해당하는8822 자의한글을추가해포함하고있다.
그러니까"Windows-949 캐릭터셋은KSC5601 의수퍼셋(Superset)" 이되며,
따라서"KO16MSWIN949 또한KO16KSC5601 의수퍼셋" 이다오라클NLS
.KO16MSWIN949
Windows-949 캐릭터셋은마이크로소프트사의Windows Codepage 949 번,
즉한글코드페이지를따른코드셋이다완성형(KO16KSC5601) 을그대로포함하고있으며,
추가로현대한글조합으로표현할수있는모든가짓수에해당하는8822 자의한글을추가해포함하고있다.
그러니까"Windows-949 캐릭터셋은KSC5601 의수퍼셋(Superset)" 이되며,
따라서"KO16MSWIN949 또한KO16KSC5601 의수퍼셋" 이다
다른운영체제에서도사용할수있다!"
19 / 26
오라클NLS
.UTF8/AL32UTF8
UTF8 은유니코드를구현한캐릭터셋중에가변길이인코딩방식을택하고있는캐릭터셋이다.
자세한인코딩방식은여기에서논할필요가없지만,
가변길이를위해일종의플래그비트를각바이트마다포함시켜야하다보니,
한글자를표한하는데필요한바이트의길이가최대3바이트(AL32UTF8 의경우6바이트)까지늘어날수있다.
유니코드는잘알려진바와같이현대한글11172 자를모두가나다순으로잘정렬된상태로포함하고있다.
그래도한글한자가3바이트의물리적공간을차지하므로,
오로지모든한글을지원한다는이유만으로사용하는것은곤란하다.
하지만, 한글이외에도다른언어들을함께데이타베이스에저장해야한다면다른선택의여지가없는유일한선택이된다.
오라클NLS
.UTF8/AL32UTF8
UTF8 은유니코드를구현한캐릭터셋중에가변길이인코딩방식을택하고있는캐릭터셋이다.
자세한인코딩방식은여기에서논할필요가없지만,
가변길이를위해일종의플래그비트를각바이트마다포함시켜야하다보니,
한글자를표한하는데필요한바이트의길이가최대3바이트(AL32UTF8 의경우6바이트)까지늘어날수있다.
유니코드는잘알려진바와같이현대한글11172 자를모두가나다순으로잘정렬된상태로포함하고있다.
그래도한글한자가3바이트의물리적공간을차지하므로,
오로지모든한글을지원한다는이유만으로사용하는것은곤란하다.
하지만, 한글이외에도다른언어들을함께데이타베이스에저장해야한다면다른선택의여지가없는유일한선택이된다.
20 / 26
오라클NLS
.한글캐릭터셋비교오라클NLS
.한글캐릭터셋비교
KO16KSC5601 KO16MSWIN949 UTF8 AL32UTF8
한글
지원
한글
2350 2350+확장
8822(총
한글
11172자
한글
11172자
11172자)
인코딩
버전
한글
완성형
확장은
MS949 에
따
Unicode2.1, 3.0 Unicode 3.0, 3.1,
라
배열
3.2, 4.0
한글
바이트
2 byte 2byte 3byte 3byte
지원버전
7.x 8.0.6 이상
8.0 이후
9i R1 이상
Nchar 로
설정가능
불가
불가
가능
불가
한글정렬
단순
바이너리정렬
KOREAN_M, 한글
: 바이너리
UNICODE_BINARY 한자
: KOREAN_M
장점
없음
2byte 로
모든
한글
입
출력
가능
정렬이
효과적
,
다른언어들과
같이
저장되어야
할
경우
다른
대안이
없음
동일
단점
한글
2350
가능한
사용자제
완성형과
호환
문제
로
글자배열순과
정
렬순서가
다름
공간의
소모
인코딩/디코딩
시간
21 / 26
오라클NLS
.자. 이걸기억하자-한글지원을위해서는반드시위의네가지캐릭터셋중에하나를선택해야한다-한국에서만사용하는시스템이라면KO16MSWIN949 를선택한다-한국어뿐아니라중국어, 일본어, 러시아어등다양한언어로된데이타를저장해야한다면UTF8, AL32UTF8 을선택한다.
-대부분이한글이며,
일부컬럼에외국어가필요하다면, 한국어기반의캐릭터셋(KO16MSWIN949) 을사용하되,
National Characterset 을이용한컬럼에외국어를저장한다.
ex) CREATE TABLE test table
( varchar_value VARCHAR2(2000),
nvarchar_value NVARCHAR2(2000)
);
NLS_LANG 변수는데이타베이스에게사용자의환경을알려주는인식표역할을한다.
-KOREAN_KOREA.KO16MSWIN949 (in window)
-AMERICAN_AMERICA.KO16MSWIN949
-KOREAN_KOREA.KO16KO16KSC5601 (in unix)
오라클NLS
.자. 이걸기억하자-한글지원을위해서는반드시위의네가지캐릭터셋중에하나를선택해야한다-한국에서만사용하는시스템이라면KO16MSWIN949 를선택한다-한국어뿐아니라중국어, 일본어, 러시아어등다양한언어로된데이타를저장해야한다면UTF8, AL32UTF8 을선택한다.
-대부분이한글이며,
일부컬럼에외국어가필요하다면, 한국어기반의캐릭터셋(KO16MSWIN949) 을사용하되,
National Characterset 을이용한컬럼에외국어를저장한다.
ex) CREATE TABLE test table
( varchar_value VARCHAR2(2000),
nvarchar_value NVARCHAR2(2000)
);
NLS_LANG 변수는데이타베이스에게사용자의환경을알려주는인식표역할을한다.
-KOREAN_KOREA.KO16MSWIN949 (in window)
-AMERICAN_AMERICA.KO16MSWIN949
-KOREAN_KOREA.KO16KO16KSC5601 (in unix)
22 / 26
오라클NLS
.KSC5601 에서지원되지않는글자들의입출력-KO16KSC5601 CS 에얼마든지그런글자들을삽입할수있던데요?
-insert into test(a) values( 숖’) ;
-select * from test
?
-NLS_LANG 를KO16KSC5601 로하면?
Insert 실패숖, 똠, 믜, 뾃, 햏-KSC5601 CS 의정렬-한글, 그리고한문도한자의음에맞게정렬-그러나한글2350자와한자4888자에대한정렬-지원하지않는글자에대한정렬은되지않음오라클NLS
.KSC5601 에서지원되지않는글자들의입출력-KO16KSC5601 CS 에얼마든지그런글자들을삽입할수있던데요?
-insert into test(a) values( 숖’) ;
-select * from test
?
-NLS_LANG 를KO16KSC5601 로하면?
Insert 실패숖, 똠, 믜, 뾃, 햏-KSC5601 CS 의정렬-한글, 그리고한문도한자의음에맞게정렬-그러나한글2350자와한자4888자에대한정렬-지원하지않는글자에대한정렬은되지않음
23 / 26
오라클NLS
.MS949 에서의정렬기존KO16KSC5601 의수퍼셋으로군림하려다보니총11172 자의한글의바이트코드가한글의언어적정렬순서와불일치할수밖에없다Select * From test Order by a
똠방각하먄해가나다라마바사라디오를켜라햏햏Select * From test Order by NLSSORT(a, NLS_SORT=UNICODE BINARY )
가나다라마바사똠각하라디오를켜라먄해햏햏Select * From test Order by NLSSORT(a, NLS_SORT=KOREAN M )
오라클NLS
.MS949 에서의정렬기존KO16KSC5601 의수퍼셋으로군림하려다보니총11172 자의한글의바이트코드가한글의언어적정렬순서와불일치할수밖에없다Select * From test Order by a
똠방각하먄해가나다라마바사라디오를켜라햏햏Select * From test Order by NLSSORT(a, NLS_SORT=UNICODE BINARY )
가나다라마바사똠각하라디오를켜라먄해햏햏Select * From test Order by NLSSORT(a, NLS_SORT=KOREAN M )
24 / 26
오라클NLS
.바로잡기의필요성을인식하라Ex)
String p_UserComment =
new String(request.getParameter(“val").getBytes("KSC5601"),"8859_1");
pstmt.setString(1,p_UserComment);
pstmt.executeUpdate();
if(resultSet.next())
{
String v UserComment =
new String(resultSet.getString(“val").getBytes("8859_1"),"KSC5601");
확장불가, 마이그레이션불가오라클NLS
.바로잡기의필요성을인식하라Ex)
String p_UserComment =
new String(request.getParameter(“val").getBytes("KSC5601"),"8859_1");
pstmt.setString(1,p_UserComment);
pstmt.executeUpdate();
if(resultSet.next())
{
String v UserComment =
new String(resultSet.getString(“val").getBytes("8859_1"),"KSC5601");
확장불가, 마이그레이션불가
25 / 26
오라클NLS
.캐릭터셋변경의위험성데이터절삭데이터깨짐-US7ASCII 에서한글데이타를exp/imp 를이용하여MS949 나UTF8 로마이그레이션-불가능-KO16KSC5601 에서한글데이터를…..
-일부데이터깨짐어플리케이션오동작-글자길이연산의오동작length, instr, substr
오라클NLS
.캐릭터셋변경의위험성데이터절삭데이터깨짐-US7ASCII 에서한글데이타를exp/imp 를이용하여MS949 나UTF8 로마이그레이션-불가능-KO16KSC5601 에서한글데이터를…..
-일부데이터깨짐어플리케이션오동작-글자길이연산의오동작length, instr, substr
기존
캐릭터
셋
새로운
캐릭터
셋
변경가능여부
US7ASCII KSC5601/MS949/UTF8/AL32UTF8 가능
KO16KSC5601 KO16MSWIN949 가능
KO16MSWIN949 UTF8 불가능
UTF8 AL32UTF8 가능
26 / 26