브라우저 별(IE, Chrom) URL Encode/Decode 질문입니다.

park3250의 이미지

안녕하세요

웹으로부터 UTF-8 -> URL 인코딩 된 데이터를 받아서

URL 디코딩 -> ANSI로 변환하여 다시 웹으로 전달 할 경우

IE에서는 캐릭터(라이온킹 1화.mp4)가 정상적으로 보여지는데

크롬에서는 캐릭터(라이온킹 1ȭ.mp4)가 깨져서 보입니다.

캐릭터가 깨지는 경우가 "0x20 + 숫자 or 특수문자 + 한글" 일 경우에만 깨집니다.

URL 인코딩/디코딩은 curl 라이브러리로 구현하였습니다.

해결방법을 알고 계신분 답변 부탁드립니다...

감사합니다.

bushi의 이미지

ANSI 로 변환한다는 게 어떤 의미인가요 ?

"화"의 euckr(및 ms-cp949)코드는 0xc8 0xad 이고,
"ȭ"의 utf-8 코드도 0xc8 0xad 입니다.

park3250의 이미지

리눅스에서 iconv 라이브러리로 UTF-8을 EUC-KR로 변환해서 웹으로 전달하는데요..

코드가 같다면...어떻게 처리 해야 하나요?

제가 잘 몰라서...

shint의 이미지

헤더에 EUC-KR 로 지정해주시면. 브라우저에서 변환 됩니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

익명 사용자의 이미지

$ locale <=== 현재 로케일은 UTF-8입니다.
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=ko_KR.UTF-8
LC_TIME=ko_KR.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ko_KR.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ko_KR.UTF-8
LC_NAME=ko_KR.UTF-8
LC_ADDRESS=ko_KR.UTF-8
LC_TELEPHONE=ko_KR.UTF-8
LC_MEASUREMENT=ko_KR.UTF-8
LC_IDENTIFICATION=ko_KR.UTF-8
LC_ALL=

1) UTF-8 데이터 만들기(보기 좋게 하기 위해 '화' + 줄바꿈(LF)를 넣어서 만들었습니다.)
$ cat > utf-8.txt <== utf-8 테스트 데이터 파일을 만듭니다. '화'한글자와 LF(Line Feed : 아스키코드번호 10, 16진법으로 0x0a)

$ ls -al utf-8.txt
-rw-rw-r-- 1 XXXX XXXX 4 12월 23 09:56 utf-8.txt

** 4바이트인 이유는 UTF-8 코드가 가변길이 코드이기 때문입니다.
UTF-8은 1~6바이트의 가변길이를 가지는 코드체계입니다. 영문권이 1바이트이고, 한국어는 3바이트 영역에 있습니다.
즉, 한글 1자가 3바이트를 차지하게 된다는 얘기입니다.
따라서, ('화' = 3바이트) + (LF = 1바이트) = 4바이트인 것입니다.

2) EUC-KR 데이터 만들기
<== 문자 인코딩을 변환해 주는 도구인 iconv를 사용해서 이미 만들어진 utf-8 데이터를 euckr로 변환해서 사용하도록 하겠습니다.
$ iconv -f utf-8 -t euckr utf-8.txt > euckr.txt
$ ls -al euckr.txt
-rw-rw-r-- 1 XXXX XXXX 3 12월 23 09:59 euckr.txt

** 3 바이트인 이유는 euckr은 2바이트 고정 길이 '한글'코드입니다. utf-8이 전세계어를 포함하고자 한다면, euckr은 한국어 및 약간의 한자등을 포함합니다.
즉, 한글 1자가 2바이트를 차지하게 된다는 얘기입니다.
따라서, ('화' = 2바이트) + (LF = 1바이트) = 3바이트인 것입니다.

$ ls -al
total 16
drwxrwxr-x 2 XXXX XXXX 4096 12월 23 10:00 .
drwxr-xr-x 29 XXXX XXXX 4096 12월 23 10:00 ..
-rw-rw-r-- 1 XXXX XXXX 3 12월 23 09:59 euckr.txt <== 3바이트( '화' + LF) : EUC-KR
-rw-rw-r-- 1 XXXX XXXX 4 12월 23 09:56 utf8.txt <== 3바이트( '화' + LF) : UTF-8

3) 실제 코드값을 디스플레이 해봅니다.
$ cat utf8.txt

$ cat euckr.txt
ȭ

$ cat utf8.txt | hexdump -v -C
00000000 ed 99 94 0a |....| <=== 바이트 단위로 코드값을 봅니다. UTF-8
00000004
$ cat euckr.txt | hexdump -v -C
00000000 c8 ad 0a |...| <=== 바이트 단위로 코드값을 봅니다. EUCKR
00000003

* '화'에 대한 코드(16진법으로 표기시)
(1) UTF-8 : ed 99 94
(2) EUC-KR : c8 ad
---------

* 코드는 다른게 정상이고요, 제 생각으로는 다른 문제(변환이 잘못되었다? 질문자님의 버그? 또는 다른 실수? 등등)인듯 보입니다.

** 참고로, 오래 전에 iconv가(JAVA의 문자열 처리에서도 exception 이... ) 전각문자 입력시 오동작했었던 것으로 기억하고 있는데, 현재는 어떤지 확인해보지 않았습니다. 이와 같은 경우는 아니겠지만요. 전각? 반각? 물음표이면 검색해 보세요.

park3250의 이미지

답변 정말 감사드립니다

제가 위에서 리눅스에서 변환해서 보낸다고 했는데 현제 윈도우 NT에서 보냅니다

정리해보면 NT에서 EUC-KR로 웹으로 보내게 되는데

IE에서는 브라우저에서 '화'를 EUC-KR로 보여줘서 제대로 보이는거고

크롬에서는 '화'를 UTF-8로 보여줘서 깨지는건가요?

제가 웹쪽은 잘 몰라서요..
결론은 웹에서 처리를 해주면 되는건가요?
아니면 제가 UTF-8로 변환된 형태로 보내주면 되는건가요?

그리고 파일명이 "라이온킹 1화.mp4" 이면 앞에 라이온킹 글자는 제대로 보이는데
화면 그런건 왜그런걸까요....?

정말 초보라 죄송합니다;;

shint의 이미지

댓글 달기

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