C언어에서 한글자르기

이광조의 이미지

EUC-KR코드를 읽어와서.. 한글 확인을 하려고하는데 경우의수가
한글 2바이트 AB
한글의 한바이트는 0x80(128)이상이고 2바이트의 범위는
0xA1A1 ~ 0xFEFE 41377 ~ 65278 인데.. 정확히 한글범위는아니고
로마자, 한글,한자, 일어가 포함된 셋이라네요. 정확하게 나누어 놓은곳이 안보이네요..
1바이트 문자 C
라고 정의 했을때..
마지막 4바이트로 검사를 하려고 했는데요 다음과 같은 셋이 나올수있죠..
ABAB CABA ABCA CCCA BABA BCCA CABA BCCA BACA ABCA CCCA

이경우로 나오는데.. 걸러내는것을..
if(마지막 두바이트가 한글이 아니면){
if(마지막 바이트가 0~128사이가 아닐경우){
한글 깨짐 -> 처리;
}
}
else //한글인경우
{
이부분에서 .. CABA BABA, ABAB 를 체크해줘야하는데..
체크할 방법이 마땅히 없습니다 ㅠㅜ.. 깨진글자는 CABA와 BABA이죠.. ABAB는 정상글자.
}

뷰어를 만들려고하는데.. 뷰어에서 한글을 짤라주는 부분을 구현하는데에 쓰려고하거든요.
메모장에서 자동줄바꿈하고 크기를 줄이면 자동으로 줄이 넘어가지요..

파일에서 일정분량의 글자를 읽어와서 buffer에 집어 넣고 한줄씩 읽어서 출력을 하려고 하는데 잘 안되네요..
되는것도 있고 안되는것도있고.. 한글이 연속적으로 이어질경우 else부분처리를 못해줘서 자꾸 깨지네요..

순수 C로만 해결하려고하는데요(유니코드로 변환해서 구현하진 않을겁니다.)
다른 좋은 방법있으면 제시좀 해주십시요.

익명사용자의 이미지

윈도우라면 mutibyte to widechar 어쩌고 함수를 쓰시고, 유닉스라면 이 역시 UTF-8 문자셋이 대세입니다.
유니코드를 써서 프로그래밍하는게 훨씬 쉬울겁니다.

fontutil의 이미지

한라프로 3.0 소스의 일부입니다. (ISHAN1ST.C, ISHAN2ND.C)
한글이 어떤 경계에 걸치는지 확인할 필요가 있을 때 사용하기도 합니다.

ishangul1st()는 문자열 s의 pos 위치에 있는 문자가 한글의 첫번째 바이트인지 확인합니다.
ishangul2nd()는 문자열 s의 pos 위치에 있는 문자가 한글의 두번째 바이트인지 확인합니다.

첨부 파일 받으세요

juny2024의 이미지

asdf

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.