VB6에서는 한글 한글자를 1Byte로 인식을 하게 되서 한글 처리를 하려면 조금 까다로운 부분이 있습니다.
예를 들면 strA 라는 변수에 "한글" 이라고 대입을 하고, 이 strA 라는 변수의 길이를 측정하게 되면 2라고 나옵니다.
Dim strA As String
Dim iLength As Integer
strA = "한글"
iLength = Len(strA)
//iLength = 2
이렇게 한글을 1바이트로 인식하게 되면 실질적으로 데이터를 파일로 저장하거나,
DB에 넣거나 다른 프로그램과 소켓 통신을 한다던가 하면 문제가 됩니다.
그래서 VB6 문자열에 한글이 포함된 경우에는
아래와 같이 StrConv와 LenB 등의 함수를 이용하여 길이계산을 바이트단위로 한 후에
한글 처리를 해야합니다.
'// Left 함수를 대신한 한글처리 가능한 H_Left 함수
Public Function H_Left(SrcString As String, iLength As Integer) As String
H_Left = StrConv(LeftB(StrConv(SrcString, vbFromUnicode), iLength), vbUnicode)
End Function
'// Right 함수를 대신한 한글처리 가능한 H_Right 함수
Public Function H_Right(SrcString As String, iLength As Integer) As String
H_Right = StrConv(RightB(StrConv(SrcString, vbFromUnicode), iLength), vbUnicode)
End Function
'// Mid 함수를 대신한 한글처리 가능한 H_Mid 함수
Public Function H_Mid(SrcString As String, idxStr As Integer, iLength As Integer) As String
H_Mid = StrConv(MidB(StrConv(SrcString, vbFromUnicode), idxStr, iLength), vbUnicode)
End Function
'// Len 함수를 대신한 한글처리 가능한 H_Len 함수
Public Function H_Len(SrcString As String) As Integer
H_Len = LenB(StrConv(SrcString, vbFromUnicode))
End Function
이 포스트를 보시는 분들은 한글 처리에 대해서 문제가 있으시기 때문에 검색을 해서 들어오셨겠죠?
한글 문제를 잘 해결하셨으면 좋겠습니다.
[IT정보공유] - [VB6] 소켓 통신시 주로 사용되는 함수 (바이트배열 문자열 변환 관련)
[VB6] 소켓 통신시 주로 사용되는 함수 (바이트배열 문자열 변환 관련)
vb6에서 소켓으로 수신된 바이트배열을 문자열로 변환할때 사용하는 함수이다. vb6은 유니코드를 사용하므로 vbUnicode 상수를 이용한다. '// Function StrConv(String, Conversion As VbStrConv, [LocaleID As Lo.....
bigenergy.tistory.com
[IT정보공유] - VB6 UTF-8 한글 문자열 변환 및 URLEncoding 정리
VB6 UTF-8 한글 문자열 변환 및 URLEncoding 정리
하..VB6에서 UTF-8 한글 변환 및 URLEncoding을 하려니 참 어렵습니다. 생각보다 쉽게 되질 않네요. C# 이나 Java라면 아주 쉽게 변환이 가능한 클래스가 제공되는데 VB6은 직접 만들어서 쓰거나 Windows API 함수.....
bigenergy.tistory.com
댓글