[첫화면으로]UseModWiki소스수정/InterMap에인코딩지정

마지막으로 [b]

변경사항 (가장 최근의 "다른 사용자에 의한 수정"부터) (일반적인 수정)

-86,7 +86,7
근데 이 작업 하면서 테스트를 하려 했더니만, EUC-KR을 사용하는 위키들은 주로 물음표링크를 쓰기 때문에 브라우저가 무조건 EUC-KR로 보내니까 상관이 없고.. 노스모크 같은 경우는 UTF-8을 쓰지만 EUC-KR로 넘어온 주소를 알아서 처리하고, 제 홈은 반대로 EUC-KR을 쓰지만 UTF-8로 넘어온 걸 처리하게 했고... 그래서 딱히 테스트할 만한 곳도 많지 않더군요. 제 생각에도 각각의 위키사이트 쪽에서 자신의 인코딩과 다른 방식으로 넘어온 페이지 이름을 처리할 수 있게 해 주는 게 낫다고 봐요. 위키페디아가 그런 처리를 안 해주는게 오히려 뜻밖이었다고 할까. (하긴 도대체 어느 나라 말로 날아올 지 모르니 전부 다 처리해 줄 수 없을지도) \\
 \\
그나마 좀 전에 번뜩 AlbireoWiki:AlbireoWiki""가 모니위키면서 EUC-KR을 쓰더라는 생각이 나서, 테스트해보니 역시나 %-인코딩은 무조건 해 주는게 안전하겠더군요. 수정했습니다. <mysign([[Raymundo]],2007-2-12 1:03 am)>
그나마 좀 전에 번뜩 AlbireoWiki:AlbireoWiki"" (DeadLink)가 모니위키면서 EUC-KR을 쓰더라는 생각이 나서, 테스트해보니 역시나 %-인코딩은 무조건 해 주는게 안전하겠더군요. 수정했습니다. <mysign([[Raymundo]],2007-2-12 1:03 am)>
"Upload :한글파일명"처럼 인터위키로 다른 위키 페이지가 아니라 파일을 링크하는 경우에는 링크를 좌클릭하는 경우 외에 우클릭해서 다른 이름으로 저장을 하는 경우도 고려해야겠는데... \\
 \\


1. intermap에 인코딩 지정
1.1. 사용법
1.2. 부작용
1.3. wiki.pl 수정
1.4. 추가 업데이트 내역
1.5. 사용자 의견

1. intermap에 인코딩 지정

InterMap 파일에 해당 사이트의 주소 인코딩을 지정하면, 인터위키처리를 할 때 지정된 인코딩으로 컨버트한 후 %-인코드를 하여 링크를 건다.

위키페디아 같은 경우는 페이지 이름으로 반드시 UTF-8이 와야 하는데, 이곳에서 "KoWikipedia:위키위키"와 같이 적으면 (IE의 "URL을 항상 UTF-8로 보냄"옵션이 꺼진 경우) 페이지를 찾지 못한다고 나오고, 그렇다고 "KoWikipedia:%EC%9C%84%ED%82%A4%EC%9C%84%ED%82%A4"처럼 적자니 매우 기분이 나빠서 (^^;) 만들었음

1.1. 사용법

인터맵 파일의 주소 항목 뒤에 "|인코딩" 형식으로 적어준다.

아이콘은 wikipedia-16.png, 인코딩은 utf-8
KoWikipedia         http://ko.wikipedia.org/wiki/|wikipedia-16.png|utf-8

만일 아이콘은 따로 없고 인코딩만 지정해준다면 아이콘을 지정하기 위한 "|"는 적어주어야 한다.
(기존 소스와 호환성을 유지하면서 수정을 최소로 하려다보니...)
KoWikipedia         http://ko.wikipedia.org/wiki/||utf-8   # "|"가 두 개

예:
* KoWikipedia:위키위키
* GyparkWIki:위키위키    - 그런 지정이 없는 경우와 비교

정확히 얘기하면, intermap에 적힌 인코딩과 자기 홈의 $HttpCharset 변수의 값이 다를 경우에, 페이지 이름 부분만 HttpCharset의 값에서 intermap에 적힌 값으로 컨버트를 시키고, 그걸 %-인코딩한 후, intermap에 적힌 사이트 주소에 합쳐서 링크를 만든다. intermap에 인코딩 명시가 되어 있지 않다거나, 적힌 인코딩과 자기의 캐릭터셋이 같은 경우는 %-인코딩만 한다.

따라서, 페이지 이름 부분이 아니라 사이트 주소 자체에 멀티바이트 문자가 있는 경우는 적용 안 될 것임.

1.2. 부작용

1.3. wiki.pl 수정

sub InterPageLink {
    ...
    ($site, $remotePage) = split(/:/, $id, 2);
    $url = &GetSiteUrl($site);
###############
### added by gypark
### interwiki 아이콘
# 이 단락 안의 내용을 다시 아래와 같이 고친다
    my ($image, $url_main, $encoding);
    ($url, $image, $encoding) = split(/\|/, $url);
    $url_main = $url;
###
###############
    return ("", $id . $punct)  if ($url eq "");
    $remotePage =~ s/&amp;/&/g;  # Unquote common URL HTML
# 아래 줄을 주석 처리하고,
#   $url .= $remotePage;
# 아래 단락 추가
### intermap 에 인코딩 지정
    my $encoded_page = $remotePage;
    if (($encoding ne "") && (lc($encoding) ne lc($HttpCharset))) {
        $encoded_page = &encode_korean($encoded_page, $HttpCharset, $encoding);
    }
    $encoded_page = &EncodeUrl($encoded_page);
    $url .= $encoded_page;

###############
### added by gypark
### InterWiki 로 적힌 이미지 처리
### from Jof's patch
    if ($useImage && ($url =~ /^(http:|https:|ftp:).+\.$ImageExtensions$/)) {
        $url = $1 if ($url =~ /^https?:(.*)/ && $1 !~ /^\/\//);
    ...
}

1.4. 추가 업데이트 내역

ext1.111a

1.5. 사용자 의견

오 Orz Wiki에 넣으려던 기능을 훌쩍 넣어버리셨군요.
-- 조프 2007-2-11 11:39 pm

위키페디아 링크를 제대로 못 거는 게 싫어서요. 어제 아침에 생각나고 오늘 낮에 작업했는데, Jof:OrzWiki에서 언급되었던 기억도 났었습니다. ;-) 어서 OrzWiki를 만들어주세요, 갈아타고 저는 좀 얻어쓰면서 놀게 ^^;;;
-- Raymundo 2007-2-12 12:58 am

근데 이 작업 하면서 테스트를 하려 했더니만, EUC-KR을 사용하는 위키들은 주로 물음표링크를 쓰기 때문에 브라우저가 무조건 EUC-KR로 보내니까 상관이 없고.. 노스모크 같은 경우는 UTF-8을 쓰지만 EUC-KR로 넘어온 주소를 알아서 처리하고, 제 홈은 반대로 EUC-KR을 쓰지만 UTF-8로 넘어온 걸 처리하게 했고... 그래서 딱히 테스트할 만한 곳도 많지 않더군요. 제 생각에도 각각의 위키사이트 쪽에서 자신의 인코딩과 다른 방식으로 넘어온 페이지 이름을 처리할 수 있게 해 주는 게 낫다고 봐요. 위키페디아가 그런 처리를 안 해주는게 오히려 뜻밖이었다고 할까. (하긴 도대체 어느 나라 말로 날아올 지 모르니 전부 다 처리해 줄 수 없을지도)

그나마 좀 전에 번뜩 AlbireoWiki:AlbireoWiki (DeadLink)가 모니위키면서 EUC-KR을 쓰더라는 생각이 나서, 테스트해보니 역시나 %-인코딩은 무조건 해 주는게 안전하겠더군요. 수정했습니다.
-- Raymundo 2007-2-12 1:03 am

"Upload :한글파일명"처럼 인터위키로 다른 위키 페이지가 아니라 파일을 링크하는 경우에는 링크를 좌클릭하는 경우 외에 우클릭해서 다른 이름으로 저장을 하는 경우도 고려해야겠는데...

UTF-8위키에서, 한글파일명이 UTF-8로 저장되었고, 링크를 UTF-8로 %인코딩했다면 => 좌클릭도 되고 저장도 잘 됨

EUC-KR위키에서, 한글파일명이 EUC-KR로 저장되었고, 링크를 EUC-KR로 %인코딩했다면 => 좌클릭은 되는데 저장할때는 파일명이 엉망으로 나옴... ㅠ,.ㅠ

UTF-8이든 EUC-KR이든, %인코딩을 하지 않았다면 => 어느쪽이든 저장 잘 됨..

이건 IE의 경우고, FF에서는 이런 문제 없음... 아 정말... IE때문에 인터위키 이름이 Upload 인 경우에 한해서만 %인코딩을 하지 않는 예외를 두던가 해야 할 듯.

Upload는 그렇다치고, 다른 사이트에 있는 파일을 인터위키로 연결하는 경우가 되면 이건 어쩝니까. %인코딩을 하지 않으면 브라우저 옵션에 따라서 링크 자체가 되다 말다 그럴테고, %인코딩을 하면 링크는 잘 되는데 다른 이름으로 저장할 때 이름을 직접 쳐넣어줘야 하겠군요.
-- Raymundo 2007-2-22 1:31 pm

위키의 인코딩과 위키를 통해 업로드한 파일들의 이름 인코딩은 항상 동일할 거라고 생각하고, Upload 에 한해서만 %인코딩하지 않도록 해야겠음.
-- Raymundo 2007-2-22 1:41 pm
이름:  
Homepage:
내용:
 

위키위키분류
각주:
1. 예를 들어, 안용열님의 AlbireoWiki:책꽂이 같은 경우

마지막 편집일: 2012-5-24 3:05 am (변경사항 [d])
975 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기