아주 간단한 고민거리 하나

웹프로그래밍을 하다보면, 게시판의 글보기 화면부터 시작해서 블로그에 이르기까지 plain text로 글 내용을 입력받아 이것을 적절히 formatting해서 보여주어야 하는 경우가 많다. 이때 가장 간단한 구현 방법으로 많이 사용하는 것이 newline 문자를 <br> 태그나 <p> 태그로 바꾸고, 본문에 포함된 URL에 자동 링크를 걸어주는 것이다.

그런데 유니코드 세상이 되면서, URL에도 유니코드가 포함될 수 있게 되었고(적당한 ASCII 문자열로 변환하는 표준 방법이 있다), 그에 따라 "http://www.example.com/한글"과 같은 주소도 자동 링크가 걸리게 처리하는 경우가 많다. 문제는 여기서 발생한다. 한국어에는 다른 서양 언어에서 볼 수 없는 조사라는 개념이 있어서, 글을 쓰다보면 "어쩌구저쩌구 http://www.example.com/에 가면 어쩌구저쩌구"와 같이 쓰는 경우가 많고, 저 '에'를 포함하여 링크가 생성되어 버리는 것이다.

보통 이런 문제를 피하기 위해 영문, 숫자 조합만 URL 덩어리로 인식하게 하든지, 사용자들이 글을 쓸 때 조사 앞을 한 칸 띄우든지 하는 방법을 사용한다. 자동으로 조사임을 인식하여 제거할 수 있을까 하는 생각도 들지만, 그럴 경우 역시 특수한 예외 케이스가 발생할 수 있기 때문에 별로 권장하고 싶은 방법은 아니다.

이 문제를 어떻게 해결하는 것이 가장 좋을까?

2007/09/18 18:09 2007/09/18 18:09
Response
No trackback yet , 10 Comments
RSS :
http://daybreaker.info/blog/rss/response/658

Trackback URL : http://daybreaker.info/blog/trackback/658

Comments List

  1. 디토 2007/09/18 22:07 # M/D Reply Permalink

    저는 URL RFC에서 허용하는 문자만 자동으로 링크하는게 맞다고 생각합니다. 다른 문자를 포함한 URL의 경우, 브라우저나 환경에 따라서 매우 다르게 처리될 수 있고, 또 표준에 맞지도 않으니까요.
    어차피 대부분의 한글이 포함된 주소의 경우 퍼센트 인코딩이 되어있으니까 괜찮지 않나요?
    (뭐 그래서 MetaBBS도 그렇게 되어있어요. =3)

    1. daybreaker 2007/09/26 18:21 # M/D Permalink

      뭐 현재로서는 그편이 가장 편할 것 같아요.
      사실 이 글을 올리게 된 게 Django에서 제공하는 urlize 필터 때문인데, 티켓으로 하나 올려둬야겠네요.

      추가 : http://code.djangoproject.com/ticket/5606

  2. spkgenesis 2007/09/26 11:10 # M/D Reply Permalink

    "http://www.example.com/에" <-- 에 직접 들어가보고 있으면 저렇게 링크 걸어주면 되고, 아니면 "http://www.example.com/" 에 걸어주면 되지 ㅋㅋㅋ 직접 확인해 보는게 쵝오 -_-b

    1. daybreaker 2007/09/26 17:57 # M/D Permalink

      ...그런 방법도 있긴 있군요. 자동링크의 목적은 아니지만 워드프레스 등에서는 ping-back이라는 이름으로 사용하는 기능이기도 하죠. (단순히 방문해보는 것이 아니라 트랙백처럼 특정 형식의 메시지를 날려서 내가 링크를 걸었음을 알려주는 기능)

      하지만 저 방법을 항상 쓸 수는 없는 것이, 매우 많은 사람들이 이용하는 게시판일 경우(예: 디씨) 서버에서 자체적으로 http request를 보내느라 상당한 부하가 걸릴 것 같습니다.;

  3. spkgenesis 2007/09/26 12:47 # M/D Reply Permalink

    그러고 보니 자연어 처리에서 합성어나 동의어 처리가 큰 골치였는데 포탈에서 "자주 쓰는 검색어"를 만들어서 한 방에 처리해버렸지 ㅋㅋㅋ

    1. daybreaker 2007/09/26 18:29 # M/D Permalink

      가끔은 기술적이지 않은(?) 방법으로 우회해서 해결할 수 있는 경우도 있죠. :)

  4. 기형z 2007/09/27 01:16 # M/D Reply Permalink

    가능한 경우를 시도해서 page not found 같은 오류가 안뜨는 곳으로 연결시키는 방법은 없나?

    1. daybreaker 2007/10/08 03:40 # M/D Permalink

      불가능하지는 않습니다만 위에서 말했다시피 부하가 많이 걸릴 수 있죠.

  5. 정태영 2007/10/28 17:48 # M/D Reply Permalink

    rfc2718 에 따르면 utf-8 인 경우 ascii 로 변경할 필요가 없습니다. (적당한 ascii code 로 변경할 필요가 없다는 얘기입니다.)

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

    1. daybreaker 2007/11/03 18:53 # M/D Permalink

      그렇군요. :)

Leave a comment
[로그인][오픈아이디란?]
« : 1 : ... 328 : 329 : 330 : 331 : 332 : 333 : 334 : 335 : 336 : ... 933 : »