php로 웹메일을 만들고 있는데 utf-8 형식의 한글이 깨집니다.

지수아비의 이미지

리눅스 서버에서 php로 웹메일을 구현중입니다.
받은 메일의 charset이 utf-8로 되어있는 경우에는 깨져보이는데
$text = iconv("utf-8","euc-kr",$text);
이렇게 해도 깨져서 보입니다.

charset이 ISO-2022-KR 이나 ISO-2022-JP 인경우에는
$text = iconv("ISO-2022-KR","euc-kr",$text);
$text = iconv("ISO-2022-JP","euc-kr",$text);
로 해서 깨져보이는걸 해결했는데
utf-8로 되어있는건 어떻게 해야 제대로 보일까요?

highwind의 이미지

제경험상 email에 관련된건 아니였자만 php.ini 파일에 다음과같은 설정으로 UTF문제를 해결 본적이 있습니다.

[mbstring]
mbstring.language             = Neutral ; Set default language to Neutral(UTF-8) (default)
mbstring.internal_encoding    = UTF-8   ; Set default internal encoding to UTF-8
mbstring.encoding_translation = On      ;  HTTP input encoding translation is enabled
mbstring.http_input           = auto    ; Set HTTP input character set dectection to auto
mbstring.http_output          = UTF-8   ; Set HTTP output encoding to UTF-8
mbstring.detect_order         = auto    ; Set default character encoding detection order to auto
mbstring.substitute_character = none    ; Do not print invalid characters
default_charset               = UTF-8   ; Default character set for auto content type header

도움이 됐으면 합니다.

=====================================
http://www.timothylive.net

=====================================
http://timothylive.net

지수아비의 이미지

default_charset = UTF-8;
이부분을 적용하면 웹페이지가 전혀 보이지 않구요.
나머지는 적용해도 변화가 없습니다.

편법을 쓰면 되긴 되는데 문제가 있습니다.
메일내용을 텍스트파일로 저장한후 iframe 으로 불러오면 깨진부분이 보입니다.
텍스트로 저장된 파일을 콘솔에서 편집기로 보면
源~@?X李 ?\由|<
이런식으로 깨져보이는데 iframe으로 보면 잘 보이네요.
위 내용은 "검토 부탁 드립니다." 라는 글자입니다.

내용은 이런식으로 본문 부분을 iframe으로 만들어서 보여주면 되는데
제목이나 첨부파일은 깨진채로 보여진다는 겁니다.

그리고 메일회신이나 전달을 할경우 깨지는건 여전한거죠.
어떻게 해결할 방법이 없을까요.

utf-8 이 정말 미치게 만드는군요..

정태영의 이미지

utf-8 로는 euc-kr 의 모든 글자를 표현할 수 있지만 (iso2022-kr 이나 euc-kr 은 표현방법의 차이일 뿐 같은 케릭터셋을 가리킨다고 생각하시면 됩니다.) euc-kr 로는 utf-8 에서 사용하는 글자를 모두 표현하는게 불가능합니다.

웹메일이라면 주 인코딩으로 utf-8 을 사용하는 것이 훨씬 좋을 것으로 보이네요.

덧) iso2022-jp 를 euc-kr 로 변환했을 때 제대로 나오는 것은 iso2022-kr ~ euc-kr 변환때와 비슷한 규칙이 적용되서 이지 언제나 올바른 결과를 보장하지는 못할 것 같습니다. 실제로 iso2022-jp 에서 사용하는 글자들 중 일부만을 euc-kr 에서 표현가능하기 때문에...

--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

지수아비의 이미지

리눅스 서버에서 php+mysql+apache 를 이용하고 있는데요
주 인코딩을 utf-8로 하려면 어디를 수정해야 하나요?

현재 아파치 설정이 AddDefaultCharset EUC-KR 로 되어있는데요
AddDefaultCharset UTF-8 로 변경했더니 기존의 만들어지 페이지들이 깨져보입니다.

참 난감하네요 ....

wkpark의 이미지

그 설정은 아예 지워주세요.
meta tag로 charset이 지정이 안되어있는 경우라도
요즘 브라우저는 지능적으로 charset을 판단하므로 AddDefaultCharset이 필요한 경우는 없다고 봐도 무방합니다.

온갖 참된 삶은 만남이다 --Martin Buber

ssik425의 이미지

기존페이지 들이 EUC-KR로 제작되어 있고

서버(PHP, mysql, apache)설정이 euc-kr로 되어있다면

웹메일 역시 euc-kr로 변환하여 출력해주는게 맞습니다.

하나의 서버에서 여러개의 캐릿터셋을 돌리는 것은

어렵기도 하거니와 사용자들의 편의상 너무 떨어지게 됩니다.

개발자들의 궁극적 비전은 ?

정태영의 이미지

apache 나 php 에서는 따로 케릭터셋 설정을 할 일이 없고, mysql 의 경우도 여러 케릭터셋을 사용하는게 그리 복잡하지 않습니다. 사용자 편의성 또한 마찬가지구요. (현재까지 쓰고 있는 애플리케이션들에서 전부 euc-kr을 사용해왔다면 euc-kr 을 global 설정으로 해두고, Utf-8 로 사용하려는 애플리케이션에서 mysql_connect 후 바로 characterset 을 utf-8 로 사용하겠다고 알려주면 되니까요.)

그리고 위에서 얘기했듯이 한글 중에서도 euc-kr 로 표현가능한 글자는 2350자에 불과하고, 한글이 아닌 경우는 그나마 euc-kr 로 표현해줄 수가 없습니다. 그렇기 때문에 euc-kr 환경에서보여주려면 html_entity (&유니코드번호; ) 정도로 변형을 해줘야 하는데 php 의 iconv 함수로는 이게 쉽지가 않죠. euc-kr 로 커버되는 글자인지를 판단하기도 쉽지가 않고...

추가적으로 얘기를 하자면 웹메일을 만든다고 하셨으니, mysql 을 써야할 일도 없을 것 같네요.

--
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

지수아비의 이미지

php 함수 iconv가 왜 안될까요?

$text = iconv("utf-8","euc-kr",$text);

이렇게 해도 깨져보이는건 마찬가지인데요...
콘솔에서 리눅스명령으로
iconv -c -f utf-8 -t euc-kr mail.txt > mail.txt2

이렇게 하면 변환이 잘 되거든요?

wkpark의 이미지

euc-kr대신 UHC를 써보세요.

온갖 참된 삶은 만남이다 --Martin Buber

댓글 달기

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