[질문] Unicode와 UTF-8 변환

crashpot의 이미지

Solaris 상에서 문자열을 soap으로 Window 플랫폼에 전달하는 프로그램을 작성중입니다.

soap 프로토콜 특성상 한글문자열 전송시 UTF-8 로 인코딩하여 전달을 해야하는데요..

Unicode 문자열을 UTF-8로 변환하는 코드를 구하여 약간 수정을 하였습니다.

남은 문제는 ANSI 문자열을 Unicode로 변환해야 하는것인데요.

방법을 모르겠네요.

제가 가지고 있는 소스는 unsigned char* 형의 Unicode 문자열을 입력받아서 UTF-8로 변환하는 것입니다.

해서 궁금한 것은..

1. char* 형을 mbstowcs() 를 이용하여 wchar_t* 형으로 바꾸면 그것이 Unicode 형으로 변환하는 것인가.

2. 그것이 맞다면, wchar_t* 를 unsigned char* 형으로는 어떻게 변환하는 것인가..

3. 이런 방법 외에 char* 형의 문자열을 UTF-8 로 인코딩 하는 다른 좋은 방법이 있는가..

입니다.

3일째 헤매고 있습니다. MFC의 경우 방대한 클래스와 메소드를 제공하기 때문에 간단히 처리되는데요..

최악의 경우 MFC 의 라이브러리를 UNIX 로 직접 매핑시키는 수밖에 없는건지요. 이것도 장난이 아닐것 같고..

조언 간절히 부탁드립니다.

미리 감사합니다. :oops:

keizie의 이미지

ASCII는 거의 모든 인코딩의 부분집합으로 들어갑니다.
따라서 따로 변환이랄 게 없습니다.

솔라리스엔 iconv 같은 게 없습니까?

큰괭이의 이미지

?

taeyeung의 이미지

char ascii[4] = "abc";

이런 문자열은

ascii[0] = 'a';
ascii[1] = 'b';
ascii[2] = 'c';
ascii[3] = '\0';

이렇겠죠

반면에 unicode에 같은 문자열은

char unicode[8];

unicode[0] = 0;
unicode[1] = 'a';
unicode[2] = 0;
unicode[3] = 'b';
unicode[4] = 0;
unicode[5] = 'c';
unicode[6] = 0;
unicode[7] = 0;

이렇게 들어 갑니다.

즉 ascii문자열에 앞쪽에 0이 한 개씩 들어간다고 보면 되겠죠

그래서

AsciiToUnicode( unsigned char *ascii, unsigned char *unicode, int *size);

를 구현하시면 되겠지요.

pynoos의 이미지

Quote:

제가 가지고 있는 소스는 unsigned char* 형의 Unicode 문자열을 입력받아서 UTF-8로 변환하는 것입니다.

unsigned char * 형의 Unicode라는 말은 그 내용이 ucs2나 ucs4 라는 말인가요? 그렇다면 크기가 이상하군요...

-----------------

solaris에도 iconv가 기본적으로 설치됩니다.
2.5.1 정도로 옛날것이 아니라면, utf, ucs 계열 변환 module도 존재합니다.

제가 사용하는 machine에서는

man -s 3 iconv

으로 정보를 구할수있습니다.

고생하세요..~~!

crashpot의 이미지

제가 3일동안 삽질을 하고 있었네요.

정답은 iconv 였습니다.

시스템 명령어 뿐 아니라 C Library 역시 존재하더군요.

정말 감사합니다. 감사합니다. :lol: :lol:

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 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>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 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>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 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>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.