UTF-8 문자셋으로만 웹서버를 운용하시는 분 없습니까?

return0의 이미지

CentOS 4.4 x86_64

APM은 RPM으로만 설치

주요 설정은 아래와 같습니다.

LANG="ko_KR.UTF-8"
SUPPORTED="en_US.iso885915:en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"

# Specify a default charset for all pages sent out. This is
# always a good idea and opens the door for future internationalisation
# of your web site, should you ever want it. Specifying it as
# a default does little harm; as the standard dictates that a page
# is in iso-8859-1 (latin1) unless specified otherwise i.e. you
# are merely stating the obvious. There are also some security
# reasons in browsers, related to javascript and URL parsing
# which encourage you to always set a default char set.
#
AddDefaultCharset UTF-8

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set=utf8

character-set-client-handshake = FALSE
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = set collation_connection = utf7_general_ci
init_connect = set names utf8

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8

[client]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

; PHP's built-in default is text/html default_mimetype = "text/html" default_charset = "UTF-8"

아파치와 php세팅은 캐릭터셋 이외에는 생략했습니다.

현재 환경 세팅으로 웹서비스는 잘 되고 있습니다만
URL에 한글이 들어가면 해당 파일을 찾지못합니다.
예를 들어 http://www.domain.com/한글파일명.htm 과 같은 주소를
아파치가 해석하지 못합니다.

IE7이나 FF는 자동으로 한글을 UTF-8로 인코딩하여 http://www.domain.com/%ED%85%8C%EC%8A%A4%ED%8A%B8.html 과 같이 보여주며 이럴 경우 파일에 접근이 가능합니다.

하지만 이것도 IE6에서는 UTF-8로 보냄에 체크를 해야만 보이고 그나마도 페이지내에 한글키워드가 포함된 링크주소(예를 들어 keysword=한글키워드?... 와 같은 문장이 포함된 링크주소)를 클릭할 시에는 해당 URL을 인식하지 못합니다.

저와 같은 조건에서 지금 문제를 모두 해결하여 설치에 성공하신 분 있는지요. 혹시 성공하셨다면 설정값을 공유했으면 합니다.

그리고 제가 뭔가 대단한 착각을 하고 되지 않을 세팅을 하고 있다면 지적도 부탁드립니다.

only2sea의 이미지

따로 detection해서 알아내는 방법이 아니면 힘들것 같더라구요. 넘어온 주소에서 eucKR인지 UTF인지 판단을 해서 iconv를 쓰는 방법밖에 없어보입니다. IE6에서 특히 ? 뒤에 인자로 넘기는 부분은 브라우저에서 그렇게 넘어와서 어쩔수가 없더라구요.

좋은 대안을 갖고 계신분이 있으시길 바랍니다.

이제는 서명에 무엇을 써야하는지 생각해보자.

익명사용자의 이미지

우선 UTF-8로 보내기를 반드시 체크하셔야 합니다.

이 옵션을 선택하지 않으면, 윈도상에서 브라우저는 euc-kr(UHC)로 주소를 보내게 됩니다.

페이지 내에 있는 한글키워드 혹은 주소들도 모두 해당 사이트에 맞춰서 인코딩을 보내주거나 해야 합니다.
노가다가 되겠지만 쉬운 방법으로는 toeuckr.php?url=http://어쩌고 라는 식으로 하는겁니다. toeuckr.php를 만드셔서 utf-8을 euc-kr로 변환시켜줘야 하죠.

return0의 이미지

http://domain/한글파일명.html 과 같은 파일은 접근 할 수 있습니다만
URL에 한글을 인자값으로 넣어 함께 넘길 경우에는 인자값이 정상적으로 넘어가지 않습니다.
http://domain/englishfilename.html?value1=한글&value2=english

UTF-8로만 꾸며지는 시스템을 원했는데 아직 시기상조 일까요?

정태영의 이미지

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

예전에 제가 관련해서 쓴 글이 있어서 링크 걸고 갑니다 :)

http://..../한글 과 같은 url 을 보내려면 utf-8 로 보내는 게 맞습니다. 만약 euc_KR 등으로 보내려면 http://..../%c7%d1%b1%db 식으로 url encode 해야 합니다.

다만 현재까지 이걸 지키지 않는 경우가 많고 -_-잘못된 사용이 많아지다보니 url 을 항상 utf-8 로 보냄 옵션을 끄는 게 해결책인것 처럼 알려져 있는 고로, rfc 문서에서의 제안대로 하면 오히려 문제가 생길 수도 있습니다.

참고로 firefox 의 경우 페이지 내에 한글 url 링크가 있을 경우 페이지의 인코딩에 근거해서 uri 를 인코딩합니다.

흠 utf-8 인자가 안 넘어간다는건 이유를 잘 모르겠네요.

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

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

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

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

송효진의 이미지

전의 글에도 달았듯이 404 페이지를 redirect 시켜서 php 가 iconv 를 하도록 해야 합니다.

emerge money

wkpark의 이미지

mod_url이 정확히 그 일을 합니다. :)

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

송효진의 이미지

사족을 좀 달자면,
글로벌 시대니 만큼 링크가 걸린 웹페이지가 utf-8 이나 euckr 이 아닌,
shift-jis 라던가 big5 라던가 하는 일이 발생할 경우도 대처할 수 있도록...===3=3=3

emerge money

wkpark의 이미지

2005년에 이미 이 기능이 확장되어서, 서버측과 클라이언트를 각각 지정할 수 있습니다.

per directory도 추가되어서, 디렉토리별로 변환을 달리 할 수도 있고요 :)

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

return0의 이미지

아파치 모듈중에 mod_charset_lite를 말씀하시는건가요? 아님 다른 기능이 있는지요?

어떤 방법으로 해당 기능을 지정할 수 있는지 어드바이스 부탁드립니다 (꾸벅)

only2sea의 이미지

아, 그렇군요. 굳이 detection을 하지 않아도 되겠네요. 404 나온 것으로 판단해버리면... 좋은 정보 얻고 갑니다.

이제는 서명에 무엇을 써야하는지 생각해보자.

wkpark의 이미지

mod_url소스는 http://kldp.net/plugins/scmcvs/cvsweb.php/mod_url/?cvsroot=modurl

mod_url은 요청된 주소가 서버에 존재하지 않을 경우에만 작동합니다. 최근에 IE7에서 문제가 있다는 버그가 보고되었는데,
직접 확인할 수는 없었습니다.

다음과 같은 식으로 기본 값을 정하고,

<IfModule mod_url.c>
  CheckURL On
  ServerEncoding EUC-KR
  ClientEncoding UTF-8
</IfModule>

또, 각 디렉토리마다 설정을 달리 할 수 있습니다.

<Directory "/home/wkpark/public_html">
<IfModule mod_url.c>
   CheckURL On
   ServerEncoding UTF-8
   ClientEncoding EUC-KR
</IfModule>
</Directory>

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

송효진의 이미지

직접 만드신건가 보군요.
문서 보려고 apache.org 갔더니 없더라고요.

ClientEncodings CP949, SJIS-WIN, EUCJP-WIN, GBK, BIG5
이런식으로 지정할 수 있게 해 주세요~~~

emerge money

댓글 달기

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