CVcode 의 간단 한 변환 확장:GBK 와 Big 5 변환
그러나 CVcode 에 서 는 GB 2312 와 BIG 5 의 전환 일 뿐 GBK 입력 법 이 유행 하 는 오늘날 GB 2312 는 분명히 부족 하 다.또한 BIG 5 문자 집합 은 GB 2312 보다 훨씬 크기 때문에 CVcode 를 확장 하여 GBK 와 BIG 5 변환 기능 을 가지 도록 하 는 것 이 필수 적 이다.
GBK 의 문자 범 위 는 다음 과 같 습 니 다.
이 중 1 과 2 가 해당 하 는 GB 2312 문자 집합 이다.
어떻게 하면 CVcode 가 GBK 를 지원 할 수 있 는 지 세 가지 문제 가 있 습 니 다. 1.GB 사이즈 판단 2.문자 순 서 를 계산한다 3.기 존 메타 와 호 환
첫 번 째 문 제 는 다음 과 같이 IsGB 를 수정 해 야 합 니 다.
GBK
<
----------------------------------------------
●GBK/1:GB2312 : A1~A9 || A1~FE
●GBK/2:GB2312 : B0~F7 || A1~FE
●GBK/3: : 81~A0 || 40~FE
●GBK/4: : AA~FE || 40~A0
●GBK/5: : A8~A9 || 40~A0
두 번 째 는 순 서 를 계산 하고 기 존의 메타 와 호 환 해 야 한다-사실은 호 환 도 주로 순서 에 있다.
function isGB(value: string): Boolean;
Var
mHigh, mLow : integer;
begin
if (length(value)>=2) then
begin
mHigh := ord(value[1]);
mLow := ord(value[2]);
Result := False;
//●GBK/1:GB2312 : A1~A9 || A1~FE
if (mHigh in [$A1..$A9]) and (mLow in [$A1..$FE]) then Result := True;
//●GBK/2:GB2312 : B0~F7 || A1~FE
if (mHigh in [$B0..$F7]) and (mLow in [$A1..$FE]) then Result := True;
//●GBK/3: : 81~A0 || 40~FE
if (mHigh in [$81..$A0]) and (mLow in [$40..$FE]) then Result := True;
//●GBK/4: : AA~FE || 40~A0
if (mHigh in [$AA..$FE]) and (mLow in [$40..$A0]) then Result := True;
//●GBK/5: : A8~A9 || 40~A0
if (mHigh in [$A8..$A9]) and (mLow in [$40..$A0]) then Result := True;
end
else
Result := true;
{ // , GB2312
if (length(value)>=2) then
begin
if (value[1] <= #161) and (value[1] >= #247) then
Result := false
else
if (value[2] <= #161) and (value[2] >= #254) then
Result := false
else
Result := true
end
else
Result := true;
}
end;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.