VB VB.NET에서 한글 인코딩 문제 해결 방법
페이지 정보
작성자본문
- 비주얼 스튜디오 2008 - utf-16
- Mysql DB 언어셋 - euckr
- PDA M3 오렌지 - 아마도 euckr인듯....
VB Net로 재고관리 프로그램을 작성하여 PDA에 설치한 다음 Mysql에 기록하니 한글이 모조리 깨진다.
몇 일을 고생한 끝에 해결책을 찾았다.
일단 vb net이 프로그램 내부에서 utf-16 방식으로 한글을 처리한다는 사실이다.
이것을 euckr 즉 949 코드 페이지 한글로 변환해서 16진수 문자열로 저장하니
한글이 정상으로 기록되었다.
' 문자열을 EUC-KR(코드페이지 949) 인코딩 기준으로
' HEX(16진수) 문자열로 변환하는 함수
Function StringToHex(ByVal str As String) As String
' EUC-KR 인코딩 객체 생성 (한글 처리를 위해 코드페이지 949 사용)
Dim euckrEnc As System.Text.Encoding = System.Text.Encoding.GetEncoding(949)
' 입력된 문자열을 EUC-KR 바이트 배열로 변환
Dim bytes() As Byte = euckrEnc.GetBytes(str)
' 결과로 반환할 16진수 문자열을 저장할 변수
Dim hex As String = ""
' 바이트 배열을 하나씩 순회하면서
For Each b As Byte In bytes
' 각 바이트를 2자리 16진수 문자열로 변환하여 누적
hex &= b.ToString("X2")
Next
' 완성된 HEX 문자열 반환
Return hex
End Function
<예시>
Dim compFix As String = StringToHex("1공장")
Dim vendorFix As String = StringToHex(txtComp.Text)
만약 Mysql이 utf-8이였다면 그냥 기록해도 안깨졌을까?
댓글목록
등록된 댓글이 없습니다.
