DokuWiki

It's better when it's simple

使用者工具

網站工具


zh-tw:pagename

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版前次修改
下次修改
前次修改
zh-tw:pagename [2009-06-16 10:19] 124.9.197.82zh-tw:pagename [2015-01-21 01:44] (目前版本) – 還原成舊版 (2013-01-06 19:55) ach
行 1: 行 1:
-====== Pagenames ======+====== 頁面名稱 ======
  
-Pagenames簡單來說就是wiki中頁面的名稱.Dokuwiki實際的檔案架構中,Pagenames就是會是那個頁面資料檔的檔案名稱.+簡單來說,頁面名稱(Pagename)就是wiki中那些頁面的名字。DokuWiki實際的檔案架構中,頁面名稱就是會是那個頁面資料檔的檔案名稱
  
-在[[DokuWiki]]中,Pagenames只可以使用英文字母,數字,以及''.''''-'' and ''_''這些特殊符號.其他特殊符號會被自動轉換成底線"_",而大寫英文字母也會自動被轉換成小寫+在[[DokuWiki]]中,頁面名稱只可以使用英文字母數字以及''.''''-''''_''這些特殊符號其他特殊符號會被自動轉換成底線"_"而大寫英文字母也會自動被轉換成小寫
-至於冒號":"則有特殊用途,它可以產生[[namespaces]].+
  
-如果您使中文命名,它會被轉換成亂碼...orz 其非英語系字母通常會被轉換,"ü" 會變成 "ue".儘管如此,只要Admin在 [[config]] 檔中正確設定 ''localname'',那這些非英語系的字母是被允許的.詳情請參見[[multilanguage]] 頁面 +至於冒號":"則有特殊途,它是用來區隔[[namespaces|分類名稱]]頁面名稱
-\\ +
-\\ +
-\\ +
-你可以看到完整Pagename在wiki中任何一頁上方.像是你現在應該看到的是''wiki:pagename''.+
  
-當你使用[[InterWiki]]的方法連結至其他的Wiki,那命名就必須符合那些wiki所訂定規則.+如果您使用中文(或中日韓字符)命名,它會被轉換成貌似亂碼的字符串,但其實那是特別的代碼。其它非英語系字母,通常會被轉換,像是"ü" 會變成 "ue"。儘管如此,只要Admin在 [[config]] 檔中正確設定 ''localname''非英語系字母是允許出現的。詳情請參見[[multilanguage]] 頁面。
  
-即使Admin在 [[config]] 設定容許使用 [[wp>CamelCase]] ,pagename還是必須符合前述命名方法. +wiki任何一頁上方,你可以看到完整的頁面名稱。例如你現在應該看到的是''wiki:pagename''。 
-\\ + 
-\\ +當你使用[[InterWiki]]的方法連結至其他的wiki,那命名就必須符合那些wiki所訂定規則。
-\\ +
-\\+
  
-====== 關於頁面名稱亂碼解決方法 ======+即使Admin在 [[config]] 設定容許使用 [[wp>CamelCase]],頁面名稱還是必須要符合前述命名方法
  
 +====== 關於中文頁面名稱亂碼的解決方法(一) ======
 ===== 伺服器環境 ===== ===== 伺服器環境 =====
   * windows XP Profession SP2   * windows XP Profession SP2
行 28: 行 22:
   * PHP加載了mb_string模塊   * PHP加載了mb_string模塊
 ===== 解決辦法 ===== ===== 解決辦法 =====
-這是一個不成熟的辦法,在分別測試了PmWiki與DokuWiki後,覺得DokuWiki很不錯。 +這是一個不成熟的辦法,在分別測試了PmWiki與DokuWiki後,覺得DokuWiki很不錯。特別是它的存儲文本文件,直接打開也是清晰可讀的。比較遺憾的是,文件名是亂碼((其實不是亂碼,是進行了urlencode編碼,我們看不懂而已))為了解決這個問題,對\inc\<del>utf8.php</del>pageutils.php做以下就可以了,經過初步測試沒有問題:
-特別是它的存儲文本文件,直接打開也是清晰可讀的。 +
- +
-比較遺憾的是,文件名是亂碼((其實不是亂碼,是進行了urlencode編碼,我們看不懂而已))為了解決這個問題, +
-對\inc\utf8.php做以下就可以了,經過初步測試沒有問題:+
  
   * 修改對文件名進行編碼、解碼的兩個函數:utf8_encodeFN、utf8_decodeFN   * 修改對文件名進行編碼、解碼的兩個函數:utf8_encodeFN、utf8_decodeFN
行 62: 行 52:
 } }
 </code> </code>
 +以下是我的修改
 +<code>
 +function utf8_encodeFN($file,$safe=true){
 +    global $conf;
 +    if($conf['fnencode'] == 'utf-8') {
 +      $file=mb_convert_encoding($file,"CP936","UTF-8");
 + return $file;}
  
 +    if($safe && preg_match('#^[a-zA-Z0-9/_\-\.%]+$#',$file)){
 +        return $file;
 +    }
 +
 +    if($conf['fnencode'] == 'safe'){
 +        return SafeFN::encode($file);
 +    }
 +
 +    $file = urlencode($file);
 +    $file = str_replace('%2F','/',$file);
 +    return $file;
 +}
 +
 +function utf8_decodeFN($file){
 +    global $conf;
 +    if($conf['fnencode'] == 'utf-8') {
 +      $file=mb_convert_encoding($file,"UTF-8","CP936");
 + return $file;}
 +
 +    if($conf['fnencode'] == 'safe'){
 +        return SafeFN::decode($file);
 +    }
 +
 +    return urldecode($file);
 +}
 +</code>
   * 對於不同的內碼,將"CP950"換成對應的代碼即可。   * 對於不同的內碼,將"CP950"換成對應的代碼即可。
   * CP936是簡體中文、CP950是繁體中文   * CP936是簡體中文、CP950是繁體中文
行 70: 行 93:
 目前知道的不足有以下一些: 目前知道的不足有以下一些:
   - 需要mb_string模塊支援;   - 需要mb_string模塊支援;
-  - 對文件名進行了編碼轉換,估計會影響運行的效率((不過對於我這種個人用戶來講,影響不大));+  - 對文件名進行了編碼轉換,估計會影響運行的效率((不過對於資料庫細小的個人用戶來講,影響不大))
   - 當更換作業系統時,還需要增加內容,對文件名進行mb_detect_encoding處理;   - 當更換作業系統時,還需要增加內容,對文件名進行mb_detect_encoding處理;
   - 會和Tag plugin的index功能衝突,產生亂碼的index   - 會和Tag plugin的index功能衝突,產生亂碼的index
-\\ 
-\\ 
  
-====== 關於中文頁面名亂碼的解決辦法======+====== 關於中文頁面名亂碼的解決辦法(二) ======
 ===== 伺服器環境 ===== ===== 伺服器環境 =====
   * windows XP Profession SP2   * windows XP Profession SP2
行 129: 行 150:
 ---- ----
  
 +====== 關於中文頁面名亂碼的解決辦法——之Windows下亂碼 ======
 +===== 伺服器環境 =====
 +  * windows Server 2008R2
 +  * Apache 2.2
 +  * PHP 5
 +  * dokuwiki-2010-11-07a.tgz “Anteater”
  
 +新版本可以直接設定編碼是UTF-8, safe或url (請參考[[http://www.dokuwiki.org/config:fnencode|config:fnencode]])
  
 +但是windows還是使用big5作為目錄與檔名的編碼
 +如是在windows下,這三種方法還是得到亂碼
  
 +我作了以下的修改可以正常的運作
  
 +1.conf/local.php
 +修改$conf['fnencode'] = 'big5';
  
 +2.inc/pageutils.php
 +<code php>
 +function utf8_encodeFN($file,$safe=true){
 +    global $conf;
 +    ...略
  
 +    if($conf['fnencode'] == 'safe'){
 +        return SafeFN::encode($file);
 +    }
  
 +    //新增以下這段
 +    if($conf['fnencode'] == 'big5'){
 +        return mb_convert_encoding($file,'big5','UTF-8');
 +    }
 +    //到這
  
 +    $file = urlencode($file);
 +    $file = str_replace('%2F','/',$file);
 +    return $file;
 +}
 +...
 +function utf8_decodeFN($file){
 +    global $conf;
 +    if($conf['fnencode'] == 'utf-8') return $file;
  
 +    if($conf['fnencode'] == 'safe'){
 +        return SafeFN::decode($file);
 +    }
 +    
 +    //新增以下這段
 +    if($conf['fnencode'] == 'big5'){
 +        return mb_convert_encoding($file,'UTF-8','big5');
 +    }
 +    //到這
  
 +    return urldecode($file);
 + return $file;
 +}
 +</code>
 +提供給大家參考
 +----
  
  
-本頁面授權方式為[[http://creativecommons.org/licenses/by-nc-sa/2.0/|Creative Commons Attribution-NonCommercial-ShareAlike License Version 2.0. ]] 
  
 +
 +
 +
 +
 +
 +
 +
 +本頁面授權方式為[[http://creativecommons.org/licenses/by-nc-sa/2.0/|Creative Commons Attribution-NonCommercial-ShareAlike License Version 2.0. ]]
zh-tw/pagename.1245140352.txt.gz · 上一次變更: 2009-06-16 10:19 由 124.9.197.82

若無特別註明,本 wiki 上的內容都是採用以下授權方式: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki