오픈위키
문서 편집

맥에서 한글로 도쿠위키 쓰기 (Unicode Nfd in Dokuwiki)

macOS에서 한글로 도쿠위키 (Dokuwiki)를 쓰면 짜증나는 문제가 발생한다… ( http://blog.vaslor.net/233 참조.. )

맥에서의 기본문자 코드는 UTF-8 이지만, 한글을 표시할 때에는 자소단위로 저장을 하고 표시를 한다. UTF-8-Mac (Unicode NFD)가 쓰이고 있다. 보통 다른 유니코드를 사용하는 시스템의 파일이름은 UTF-8(Unicode NFC)로 사용되었다.

잘 설명된 문서가 있으니 참고한다.

네이버 엔드라이브도 마찬가지...

이로 인한 문제가 발생할 수 있다.

http://ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%EC%A0%95%EA%B7%9C%ED%99%94

음.. 따져보자….

  • 도쿠위키는 자료저장에 DB를 사용하지 않고, 파일을 사용한다.
  • OSX는 파일을 저장할 때 파일이름에 일반적인 유니코드 UTF-8(Unicode NFC) 를 사용하지 않고, 조금 다른 (그러나 역시 표준인) 유니코드 UTF-8-Mac (Unicode NFD) 를 사용한다. (그냥 문서작성에는 상관없다.)
  • 한글은 유니코드로 표시된다.

따라서 엿같은 문제가 발생한다. (문서작성은 상관 없고, 파일 업로드 할 때 문제…) 일반적인 웹에서는 UTF-8-Mac (Unicode NFD) 도 그냥 유니코드로 인식하므로, 그냥 별다른 에러나 경고 없이 작동된다. 하지만, 명백히 다른 코드로 글자가 표시되므로, 검색이나 파일 참조 시 파일이 없다(!) 라는 식의 문제가 발생한다.

php에는 normalizer::normalize라는 함수가 있어 해결이 가능하다.

도쿠위키 기본설명서 ( pagename )에 힌트가 나와 있어서 해결했다.

inc/utf8.php의 330 줄 부근의 utf8_strlower 함수를 다음과 같이 수정하면 된다.

    function utf8_strtolower($string){
        if(UTF8_MBSTRING) return normalizer::normalize(mb_strtolower($string,'utf-8'));
 
        global $UTF8_UPPER_TO_LOWER;
        return strtr($string,$UTF8_UPPER_TO_LOWER);
    }

도쿠위키가 업데이트 될 때마다 해줘야 한다.

누구나 수정하실 수 있습니다. 위키 사용법 참고하세요.

연결문서

CC Attribution-Noncommercial-Share Alike 4.0 International 별도로 명시하지 않을 경우, 이 위키의 내용은 다음 라이선스에 따라 사용할 수 있습니다: CC Attribution-Noncommercial-Share Alike 4.0 International
2.4 KB tech/unicode_nfd_dokuwiki.txt · 마지막으로 수정됨 2016/10/02 14:39 저자 V_L V_L

0.074 seconds in processing this page on this powerful server.