C 에서 한글 처리
글쓴이: 매그넘 / 작성시간: 금, 2007/02/09 - 4:57오후
안녕하세요...
새내기..직장인인데.. 그동안 너무나 궁금했던 점이 있었는데.. 조언좀 부탁드리겠습니다.
int main(void)
{
char str[] = "안녕하세요";
printf("%c\n",str[0]); //이상한 값 출력
printf("%d\n", str[0]); // -66 출력
exit(0);
}
char 배열에 한글을 넣었을때.. 문자열을 통째로 출력 (%s 지시자) 하면.. 아주 정상적으로 출력이 잘되는데.
배열의 한개의 요소 (char) 를 출력할려고 하면.. 이상한값이 나오고...
문자라는 실상은 code 로 이루어져 있어서 %d 로 숫자로 출력을 하면 -66 이란 값이 나오는데...( 'a' 를 출력하면 ascii code 97 이 나오는것처럼..생각을 했습니다~)
char 배열에서 한글이 어떤식으로 처리가 되고. 돌아가는지..
그리고 문자열 "안녕하세요" 가 있을때 "안" 만 출력을 하려면 어찌 해야하는지..
조언 좀 부탁드리겠습니다.
혹시나.. 이미 많이 올라온 내용일경우라면..(검색을 해봤는데..만족할 만한 내용은 못찾았습니다.. ㅡㅡ;) 검색어 를 추천해주세요!!!
Forums:
그냥
%c%c 하시고 str[0], str[1] 해서 이어서 출력하시면 될 듯하네요.
예를 들면
printf("%c%c", str[0], str[1]);
이렇게요. ^^
utf8 환경이시라면
utf8 환경이시라면 3바이트 출력을...
---------------------------
Smashing Watermelons~!!
Whatever Nevermind~!!
----
use perl;
Keedi Kim
대부분의 환경에서
대부분의 환경에서 char는 옥텟(8비트)이고 char의 배열의 한 요소 역시 옥텟입니다. 한글은 옥텟으로 표현이 불가능합니다.
- CN의 낙서장 / HanIRC:#CN
- 죠커's blog / HanIRC:#CN
man unicode 를 하니까
wchar_t type에 대한 이야기나 인코딩에 대한 이야기가 나오네요. multibyte 문자에 대해서는 wchar_t type을 써야 되지 않을까요?
--
foldl (flip (:)) [] "universe"
저도 정말 궁금한게
저도 정말 궁금한게 있는데여..
ascii니 utf니 하는 코드들은 어느 시점에서 적용 되는거죠??
코드들을 어디서 관리를 하고 있다고..프로그램 실행시 어느 시점에서 코드가 적용 되는지 좀 갈켜 주세염..;;;;
번역단에서 결정되는것이 아닐까요?
아마 소스의 인코딩에 따라 소스에 쓰여진 문자열이라든지 문자열상수등이 결정되는것으로 보입니다. 소스 인코딩을 euc-kr로 해서 컴파일을 하면 소스내에서 입력한 문자값들은 euc-kr로 인코딩 되어 있을것이고, 그 인코딩을 읽을수 있는 환경에서만 읽을수 있겠죠...

poklog at http://poksion.cafe24.com/poklog/
poklog at http://poksion.cafe24.com/poklog/
댓글 달기