(Shift_jis)일본어가포함된 URL에러와 "URL을 항상 UTF-8로 보내기" 옵션을

BOBOS의 이미지

안녕하세요;

일본어환경에서 일본어 사이트를 만들었습니다.
레뎃, php5.1.1, mysql 5.x.x, apache2 입니다.

html meta 는 shift_jis 이고
mysql 캐릭터셋도 전부 shift_jis 로 맞춰져 있으며
DB connect 시, set names sjis; 까지 해봤습니다.

일본어표기는 대부분 잘됩니다만,

일본어(한자포함)가 포함된 URL을 만들었는데,
이게 글자가 깨져서 날라가네요.물론 영숫자로만된 URL은
이상이 없는데, 일본어포함된URL은 다 깨져서, 엉망이됩니다.

익스플로러에서 "URL을 항상 UTF-8로 보내기" 옵션을 체크를
풀면 괜찮습니다.-_-;

즉 URL 을 utf-8로 보내니깐 깨진다는건데, 이걸 shift_jis로 날릴순 없는건지요?.. url 만 문제네요..
가르침부탁드립니다.

아래는 혹시나해서 뿌려드립니다.
URL 예)

http://xxx.xxx.xxx.xxx:1111/t/CB/グッズ/小物/D2/

중간에 일본어가 박살이 나네요-_-

해당 DB내용입니다.
mysql> show variables like '%char%';
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | sjis |
| character_set_connection | sjis |
| character_set_database | sjis |
| character_set_results | sjis |
| character_set_server | sjis |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+

keizie의 이미지

아스키 영역을 넘는 바이트를 %nn로 풀어줍니다.

BOBOS의 이미지

kz wrote:
아스키 영역을 넘는 바이트를 %nn로 풀어줍니다.

먼저 감싸드립니다. :)
urlencode,urldecode,
rawurlencode, rawurldecode 를 말씀하시는거군요;

일단,
1. 변수를 넘겨서주고받지 않는 그냥 HTML에서 시작하는
URL(일본어(한자)포함)은 엔코딩을 어떻게 먹히죠-0-;

2. 지금 apache2 셋팅의 mod_dav, mod_url
mod_encoding 모듈 쪽으로 알아보고있는데 맞는건지모르겠네요;

I'm...

returnet의 이미지

간단하게 해결하시려면 mod_encoding이 답입니다.
서버측을 UTF-8로 지정하고
클라이언트의 디폴트 값을 일본어코드로 지정하시면 됩니다.

mod_encoding을 사용하면 어느쪽 코드로 들어오든 url은 utf-8로 변환됩니다. 다만 페이지가 utf-8이라도 헤더부분의 인코딩은 일본어 코드로 나갈 것이기 때문에 location: 같은 헤더를 사용하실때에는 url을 utf-8이 아닌 일본어코드를 사용하셔야 합니다.

제 위키페이지에서 url 입력 테스트를 해보세요. kldp의 페이지는 euc-kr입니다.

[url]http://returnet.blogdns.com/테스트[/url]

utf-8 옵션이 켜져 있는 IE의 경우 euc-kr페이지의 링크를 따라 사이트를 방문한뒤에는 주소표시줄의 지난 주소들 목록에서 깨진주소로 나오긴 하지만 링크를 클릭하거나 직접 쳤을 경우에는 utf-8로 정확히 전달됩니다.

hirameki의 이미지

http://gendoh.tistory.com/tag/IE7

--

LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
Hirameki --X-
Mail : hirafilter-comunity@yahoo.co.kr
그외 비밀..
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

--

LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
Hirameki --X-
Mail : hirameki_krjp@yahoo.co.jp
God is not customer center. Do it yourself
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

wkpark의 이미지

최신 mod_url에서는 위 블로그 사이트에서 제기한 문제점이 없다고 합니다.

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

hirameki의 이미지

shift-jis는 MS에서 윈도우용으로 만들었지만 실제적으로 윈도우에서는 더많은 기종의존문자를 가지고 있습니다.
그래서 MS932를 사용하는 윈도우의 문자중 shift-jis로 인코딩하면 깨지는 문자들이 상당수 있습니다.
그러므로 그러한 문자들(특히 동그라미 1,2,3,4등)이 깨지지 않기를 바란다면 MS932로 읽어내 UTF-8로 저장하는것이 좋습니다.
그러나 이것도 만능은 아니라서 MS-932에서는 구분되나 Unicode에서는 구분되지 않는 글자도 존재하므로
윈도우 일본어의 문자를 100%보존 가능한것은 일본어윈도우즈 서버 뿐입니다.
물론 그 외의 OS에서는 UTF-8을 채용하고 있으므로, 페이지 인코딩이 UTF-8이면 더욱 좋겠죠.
윈도우도 UTF-8 이 돌아가기는 하니까요.

--

LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
Hirameki --X-
Mail : hirafilter-comunity@yahoo.co.kr
그외 비밀..
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

--

LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
Hirameki --X-
Mail : hirameki_krjp@yahoo.co.jp
God is not customer center. Do it yourself
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

hirameki의 이미지

윈도우 vista가 나왔으니 shift-jis가 버전업되었을것입니다.(윈도우의 버전에 맞추어 문자코드가 버전업됩니다.)
ash.jp에서 확인해보시는것이 좋을것 같습니다.

--

LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
Hirameki --X-
Mail : hirafilter-comunity@yahoo.co.kr
그외 비밀..
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

--

LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
Hirameki --X-
Mail : hirameki_krjp@yahoo.co.jp
God is not customer center. Do it yourself
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

cjh의 이미지

<a href="http://xxx.xxx.xxx.xxx:1111/t/CB/グッズ/小物/D2/
" rel="nofollow">http://xxx.xxx.xxx.xxx:1111/t/CB/グッズ/小物/D2/
</a>

일본 웹 사이트들은 거의 대부분 URL안에 일본어를 바로 넣지 않습니다.
OS환경도 다양하고 (유닉스, 윈도우, 맥 등) 문자셋도 호환되지 않기 때문입니다.

공통적으로 사용할 수 있는 문자셋을 정하고 (UTF-8등) 그걸로 URL encoding(%XX)을 해서
넘기는 것이 최선의 방안이라 생각합니다.

--
익스펙토 페트로눔

--
익스펙토 페트로눔

정태영의 이미지

RFC2718 에 따르면 url 에는 utf-8 을 사용해야하므로 utf-8 로 url 을 보낼 경우 따로 urlencode 를 해줄 필요가 없습니다.

하지만 euckr 이라거나 eucjp, shift_jis 등을 사용하려면 urlencode 를 해서 넘겨줘야 하죠.

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

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

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

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

정태영의 이미지

이와 관련해서 제가 예전에 써놨던 글을 링크걸어봅니다.

http://b.mytears.org/2005/03/136

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

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

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

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

댓글 달기

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