[질문] multibyte 관련

omando의 이미지

여러군데서 multibyte라는 용어가 자주나오더군요.
간단히는 한글표현과 관련되어있다는 정도만 알고 있습니다.
정확히 이해하기엔 난해하여 기냥 무시하여 왔는데
드뎌 문제가 발생했습니다.

c코드를 vi가 아닌 unix외부에서 에디터로 작성후 unix에 올려 돌려보니
컴파일이 안되길래 vi로 해당 화일을 open하려했더니 다음과 같은
메시지가 뜨더군요.

--> one or more invalid multibyte characters removed 75 lines
1617characters (1542 nulls) .....

글구 해당 코드의 매 line 끝마다 ^M 표시가 되어있더군요.

대체 multibyte를 어떻게 이해해야 될지 모르겠군요.

ps : cc로 컴파일시 에러메시지가 수십개 발생하여 terminal창에서 한번에
볼수없을경우 | more 라던지 > a.out 식으로 메시지를 화일로
저장한다던지 하는 방법이 없나요. 두가지 방법 다 안되던데..
실제 컴파일 예 : >cc -o socket socket.c | more
>cc -o socket socket.c > a.out

verena의 이미지

omando wrote:

c코드를 vi가 아닌 unix외부에서 에디터로 작성후 unix에 올려 돌려보니
컴파일이 안되길래 vi로 해당 화일을 open하려했더니 다음과 같은
메시지가 뜨더군요.

--> one or more invalid multibyte characters removed 75 lines
1617characters (1542 nulls) .....

글구 해당 코드의 매 line 끝마다 ^M 표시가 되어있더군요.

line끝마다 ^M이 표시되는 경우는 ftp로 전송시에 전송모드가 안 맞는 경우입니다.
그리고 소스파일은 보통 unicode가 아닌 일반 아스키모드 혹은 utf-8로 작성 하시면 됩니다.
일단 소스파일을 어떤형식으로 저장하셨는지부터 체크해 보세요.

sorcerer의 이미지

omando wrote:
c코드를 vi가 아닌 unix외부에서 에디터로 작성후 unix에 올려 돌려보니
컴파일이 안되길래 vi로 해당 화일을 open하려했더니 다음과 같은
메시지가 뜨더군요.

--> one or more invalid multibyte characters removed 75 lines
1617characters (1542 nulls) .....

도대체 소스에 무슨 문자가 들어가 있는지를 알 수 없으니 뭐라 답을 못 하겠습니다. 혹시 한글로 주석을 달아놓은 것 일까(라지만 한글로 주석 달았다고 컴파일 안 되는 경우는 겪어본 적이 없는지라; )

설마 UTF16을 쓰는건 아닐테니 다른 영어로 된 부분은 이상 없을 것이구요.

omando wrote:
글구 해당 코드의 매 line 끝마다 ^M 표시가 되어있더군요.

^M이 붙었다는건 윈도우에서 작성하고 업로드 하셨다는 말씀이군요.
FTP의 파일 전송모드를 ASCII로 해서 새로 업로드 하십시요.
그리고 그 vi에서 될 지 모르겠는데, 여튼 vi에서
:%s/^M//
하시면 ^M이 다 지워집니다. 단, ^M은 ^와 M을 따로 입력하는것이 아니라
Ctrl+V+M 을 입력해야 합니다. 저게 먹어줄지는 의문이네요..

omando wrote:
ps : cc로 컴파일시 에러메시지가 수십개 발생하여 terminal창에서 한번에
볼수없을경우 | more 라던지 > a.out 식으로 메시지를 화일로
저장한다던지 하는 방법이 없나요. 두가지 방법 다 안되던데..
실제 컴파일 예 : >cc -o socket socket.c | more
>cc -o socket socket.c > a.out

3개의 기본 IO가 있고 이는 각각 stdin stdout stderr 입니다. 그런데 리다이렉션 중에서 <는 stdin 을 리다이렉트 하고, > 는 stdout 을 리다이렉트 합니다.
즉, stderr은 > 으로 리다이렉트 할 수 없다는 뜻입니다. stderr이 에러출력시 사용되므로 >로는 안 된다는 말이지요. stderr은 2> 를 사용합니다. 그러니까 위에서 > 대신 2>를 사용해야 한다는 말입니다.

omando wrote:
여러군데서 multibyte라는 용어가 자주나오더군요.
간단히는 한글표현과 관련되어있다는 정도만 알고 있습니다.
정확히 이해하기엔 난해하여 기냥 무시하여 왔는데
드뎌 문제가 발생했습니다.

multibyte는 간단히 설명하면 단지 한 글자가 1바이트로 이루어지지 않고 그냥 2바이트 이상으로 이루어질 경우 멀티바이트 문자라 합니다. 한글, 일본어, 중국어 등등이 있겠지요. 자세한 것은 자료 많으니 찾아보셔도 괜찮습니다.

SOrCErEr

익명 사용자의 이미지

리다이렉션을 할때 stderr 과 stdout을 함께 할수 있습니다.

gcc -o a.out a.c 2>&1 | more

이런식으로 해보세요.

omando의 이미지

답변해주신분들께 머리 숙여 감사드립니다.

:D

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.