한글로 된 텍스트파일을 fread(buffer,1,nmemb, fp) 로 읽는데 ?

jagalchee의 이미지

한글도 들어있는 텍스트 파일을 fopen(filePath, "r")으로 열어서

fread(buffer, 1, nmemb, fp)로 읽어서, 소켓을 통해서 클라이언트로 전송한다음, 클라이언트에서 fwrite(buffer, 1, nmemb, fp)를 이용해서 파일로 쓰는데 잘 되는 이유가 무엇인가요?

한글은 2바이트로 알고 있는데... 저렇게 해도 아무 이상이 없는건가 해서요. 그냥 우연치 않게 잘 되는건지, 아님 원래 잘 되야 하는건지... 무지해서 잘 모르겟네요.^^; 자세히 설명 주시면 감사드리겠습니다.

아, 추가질문이 있습니다. 리눅스에서는 바이너리 파일이든지 텍스트 파일이든지 구분을 하지 않고, fopen(filePath, "r")으로 열고, fread(buffer, 1, nmemb, fp)와 같이 읽으면 된다고 알고 있습니다. 그럼 http 프로토콜에서 헤더에 content-type 이란걸 붙여서 보내는데 이건 어디에 쓰이는가요? 저는 처음엔 content-type 이란걸 분석해서 이걸 이용해서 바이너리로 보낼지 텍스트로 보낼지 결정하는지 알았는데... 리눅스에서는 구분을 하지 않는다는 거 같아서 질문드립니다. 답변 부탁드릴께요.

wafe의 이미지

단순히 생각해서 무슨 파일이든지간에 파일은 그저 비트의 나열일 뿐입니다. 그래서 파일을 복사하려면 그저 순서대로 읽어서 그대로 써주면 복사가 되는거죠. 이게 한글을 나타내는 바이트의 일부인지, 영어인지, 아니면 그저 데이터일 뿐인지는 어플리케이션의 입장에서 신경써야할 문제일 뿐입니다.

마찬가지로 http헤더에 content-type을 적어주는 것은 관련된 어플리케이션들(웹브라우저나 웹서버 등등)이 이 파일을 어떻게 다루어야 하는지 알려주기 위한 목적입니다. html 파일이면 화면에 그려주고 doc 파일이면 워드를 띄워주고 등등...

Heejoon Lee

댓글 달기

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