BugTrack/2195
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* [UTF-8] UTF-8に移行したサイトに、移行前のページ名(URL)...
- 元タイトル: EUC-JP -> UTF-8移行後のページ名について
- ページ: [[BugTrack]]
- 投稿者: [[okkez]]
- 優先順位: 低
- 状態: 完了
- カテゴリー: プラグイン
- 投稿日: 2006-09-22 (金) 01:14:26
- バージョン: 1.4.7
- リリース予定バージョン: 1.5.4
** メッセージ [#a900a439]
EUC-JP -> UTF-8に移行した場合、旧ページ名((日本語を含む))...
PukiWiki 1.5.4 での対策:
PageURIHandler を使ってリダイレクトを行う。
pukiwiki.ini.php:
// Page-URI mapping handler ( See https:// pukiwiki.osdn...
class EucjpUtf8RedirectPageURIHandler extends PukiWikiSt...
function filter_raw_query_string($query_string) {
if (! $query_string) {
return $query_string;
}
if (strpos($query_string, '&') !== FALSE) {
return $query_string;
}
if (strpos($query_string, '=') !== FALSE) {
return $query_string;
}
if (strpos($query_string, '%') === FALSE) {
return $query_string;
}
$page = rawurldecode($query_string);
if (mb_check_encoding($page, 'UTF-8')) {
return $query_string;
}
if (! mb_check_encoding($page, 'CP51932')...
return $query_string;
}
$utf8_page = mb_convert_encoding($page, '...
if (!$utf8_page) {
return $query_string;
}
$location = get_page_uri($utf8_page, PKWK...
header('HTTP/1.0 302 Found');
header('Location: ' . $location);
exit;
}
}
$page_uri_handler = new EucjpUtf8RedirectPageURIHandler();
このコードを pukiwiki.ini.php の $page_uri_hanlder がある...
以下の情報は、PukiWiki 1.5.4より前の過去の議論と、動作の...
----
とりあえず悲しさを軽減できるパッチを作ったので参考までに...
Index: read.inc.php
========================================================...
--- read.inc.php (revision 225)
+++ read.inc.php (working copy)
@@ -25,7 +25,15 @@
} else {
// 無効なページ名
+ if ('EUC-JP' === mb_detect_encoding($page)) {
+ $page = mb_convert_encoding($page, 'UTF-8', 'EUC-JP');
+ $body = make_pagelink($page);
+ return array(
+ 'msg'=>'maybe this page?',
+ 'body'=>$body
+ );
+ }
return array(
'msg'=>$_title_invalidwn,
'body'=>str_replace('$1', htmlspecialchars($page),
*** PukiWiki 1.5.4 での対策 [#ud3d0591]
EUC-JPの日本語文字のうちそのバイナリ列をUTF-8文字として解...
与丐丕丙両个丱丶丹丼丿乂乃之乏乖乘乢亂亅了予亊于亞亟亠亡...
仗任伐伴但佑余佞併侫侶促俗俵側傍傳僂僉僊働僖僚僞僣僥僭僮...
儺儻儼儿兀兌兒兔兢八六兵其典冥凌函分判則剖劉劬劭労劵劼勁...
勸勹匆匈匍匏匐匕匚匣匯匱匳匸匹匿區半卒単即友反叩同名吻呂...
哭哮哲哺哽唏唔售唯唳唸唹啀啅啌啖啗啜啝啣喀喊喙嗇嘆噴噺嚢...
坊坎坏坡坦坩坿垈垉垓垠垤垪垰垳埀埃埆埒埔埜堂塀塙填墳夕多...
妣妨妲姆姙姚姜姨姫娉娑娘娚娜娟娥娵娶婀婁婉婢婪婬婿媚媛媼...
屏屐展属屬屮屶屹岌岑岔岫岬岶岷岻岼岾峅峇峙峠峩峪峭峺峽崋...
年幽庁店廊廖廚廛廝廡廢廣廨廩廬廰廱廳廴廸廼廾弃弄弉弋弌弍...
彌彎彜彝彦彪彫律徴徹必忍忘忙忰念息悄悋悒悖悗悛悠悧悩悴悵...
惻愀愃愆愍愎愕愡慍慮憂憤憧懲戞戡截戮戰戲戳房扁扎払扛扞扠...
抜抬抻担拆拏拑拔拗拿挑捉捗捻掠探揃揖損摘撚撞撤撻擂擅擇擒...
擶擺擽攀攅攘攜攣攤攫攬攴攵攷敵文旅族旦昿暢暴暸曄曖曚曠曦...
朦朧未朮朶朷朸朿杁杆村杙杞束杠杣杤杰枉柊某柚桧棆棔棕棗棚...
椨椪椰椶椹椽楔楙楜楫楮楴楷楸楹楼楾榔標樽檗檪檬檳檸檻櫂櫃...
欟欷欸欹歃歇歉歎歐民氷沸沺法泙泛泡泥泪泯洌洒洙洞洟洫洳洵...
涎涓涕涵淇淡淵淹添渊渕測湊湛湧溌溜溺滴滷漂漏漓漫漾潘潛潦...
澡澣澤澪澳澹濂濃濆濔濕濘濟濡濤濬濳炉炭烹焚無熱燃牒牟牢物...
畑留畠畢略疋痢発百的盜直眠眺瞳矛短砲硫硲祐祢票禄福禰稔稗...
箱箸篭粉粍粒粘糞納紐紛続綻縫纏罰老耽聞聴聾肇肋肌肘胞胴能...
菱萄萌葎董葱蓑蓬蓮蔓蔵蕩藤蘖蘗虜蛤蜂蜜蝋蝶融衍表袖裏裕裡...
謄謬谷豆豊豫豹貼賂賊贈超足路跳踏転輸轍辧辰辿迭逃透速造連...
醗里釘鉄鉢銅銚鋒錬録鏑鐙長閥闘陶陸隆隼雄離雰霧露霸韮頂頭...
鳥鳩鳳鴇鵡鵬麓鼎鼻龍
これ以外の文字が1文字でも含まれているページであれば、 mb_...
さらに、mb_check_encoding($eucjp_page, 'CP51932') がTRUE...
旧URLにアクセスした場合でもUTF-8変換後の同盟ページにアク...
救えない (リダイレクトされない) のはUTF-8として解釈しても...
これは十分少ないと推測できる。
調査用コード:
for ($i = 127; $i <= 65536; $i++) {
$c = IntlChar::chr($i);
$c_eucjp = mb_convert_encoding($c, 'CP51932', 'UTF-8...
$c_utf8 = mb_convert_encoding($c_eucjp, 'UTF-8', 'CP...
if ($c === $c_utf8) {
if (mb_check_encoding($c_eucjp, 'UTF-8')) {
echo $c;
}
}
}
PageURIHandler を使って対策
pukiwiki.ini.php:
// Page-URI mapping handler ( See https:// pukiwiki.osdn...
class EucjpUtf8RedirectPageURIHandler extends PukiWikiSt...
function filter_raw_query_string($query_string) {
if (! $query_string) {
return $query_string;
}
if (strpos($query_string, '&') !== FALSE) {
return $query_string;
}
if (strpos($query_string, '=') !== FALSE) {
return $query_string;
}
if (strpos($query_string, '%') === FALSE) {
return $query_string;
}
$page = rawurldecode($query_string);
if (mb_check_encoding($page, 'UTF-8')) {
return $query_string;
}
if (! mb_check_encoding($page, 'CP51932')...
return $query_string;
}
$utf8_page = mb_convert_encoding($page, '...
if (!$utf8_page) {
return $query_string;
}
$location = get_page_uri($utf8_page, PKWK...
header('HTTP/1.0 302 Found');
header('Location: ' . $location);
exit;
}
}
$page_uri_handler = new EucjpUtf8RedirectPageURIHandler();
UTF-8としてinvalidなページ名のリクエストが来たら、リクエ...
詳細ロジック:
- (1) クエリ文字列中に '&' や '=' が入っていたらリダイレ...
- (2) クエリ文字列中に '%' がなければリダイレクトしない (...
- (3) クエリ文字列の rawurldecode() 結果がUTF-8として正し...
-- UTF-8バイナリとして正しいURLであれば新URLでのアクセス...
- (4) クエリ文字列の rawurldecode() 結果をEUC-JP → UTF-8 ...
-- 旧 EUC-JP のURLとみなす
--------
- コメントありがとうございます。重要度と影響範囲を判断で...
-- [[okkez:memo/改造/UTF-8化#n5876a19]] EUC-JP 時代のペー...
-- この件は、元々EUC-JPで公開していたサイトや、相手方がIn...
-- 汎用化する場合: 上記パッチは UTF-8 化したサイトに対す...
--- 本家に取り込む場合はそのようにするべきだと思います。-...
- official/devからのアクセスがきっかけになった予感が。 --...
-- 実はofficial/devはInterWikiを以前、設定しなおしたので...
- 前後の状況が解ったところで、対応の適切さの件。okkezさ...
-- リダイレクトさせる場合についてはその通りですね。 -- [[...
-- 各種コメントありがとうございます。あれから少し考えたの...
-- ページが存在しない場合でも、validなページ名の場合は移...
- [[開発日記/2015-01-03]]: UTF-8版の利用を推奨、[[BugTrac...
- PukiWiki 1.5.4 のページURLカスタマイズのPageURIHandler...
-- 「EUC-JPの日本語文字のうちそのバイナリ列をUTF-8文字と...
- このサイト (PukiWiki-dev) も 1.5.4 にバージョンアップを...
- すみません、いろいろコードが書いてありますが、最終的に...
- Pukiwiki 1.5.4 であれば自動的に適用されているのではない...
- 適当に開いてた日本語ページ名のURLをエンコードしてURLに...
- 『いろいろコードが書いてありますが、最終的にどれをどう...
-- 例えばこういうURLです: https:// pukiwiki.osdn.jp/dev/?...
- dev限定だったんですね。失礼しました。ありがとうございま...
- ありがとうございます。試してみます。 -- [[harrek]] &new...
#comment
終了行:
* [UTF-8] UTF-8に移行したサイトに、移行前のページ名(URL)...
- 元タイトル: EUC-JP -> UTF-8移行後のページ名について
- ページ: [[BugTrack]]
- 投稿者: [[okkez]]
- 優先順位: 低
- 状態: 完了
- カテゴリー: プラグイン
- 投稿日: 2006-09-22 (金) 01:14:26
- バージョン: 1.4.7
- リリース予定バージョン: 1.5.4
** メッセージ [#a900a439]
EUC-JP -> UTF-8に移行した場合、旧ページ名((日本語を含む))...
PukiWiki 1.5.4 での対策:
PageURIHandler を使ってリダイレクトを行う。
pukiwiki.ini.php:
// Page-URI mapping handler ( See https:// pukiwiki.osdn...
class EucjpUtf8RedirectPageURIHandler extends PukiWikiSt...
function filter_raw_query_string($query_string) {
if (! $query_string) {
return $query_string;
}
if (strpos($query_string, '&') !== FALSE) {
return $query_string;
}
if (strpos($query_string, '=') !== FALSE) {
return $query_string;
}
if (strpos($query_string, '%') === FALSE) {
return $query_string;
}
$page = rawurldecode($query_string);
if (mb_check_encoding($page, 'UTF-8')) {
return $query_string;
}
if (! mb_check_encoding($page, 'CP51932')...
return $query_string;
}
$utf8_page = mb_convert_encoding($page, '...
if (!$utf8_page) {
return $query_string;
}
$location = get_page_uri($utf8_page, PKWK...
header('HTTP/1.0 302 Found');
header('Location: ' . $location);
exit;
}
}
$page_uri_handler = new EucjpUtf8RedirectPageURIHandler();
このコードを pukiwiki.ini.php の $page_uri_hanlder がある...
以下の情報は、PukiWiki 1.5.4より前の過去の議論と、動作の...
----
とりあえず悲しさを軽減できるパッチを作ったので参考までに...
Index: read.inc.php
========================================================...
--- read.inc.php (revision 225)
+++ read.inc.php (working copy)
@@ -25,7 +25,15 @@
} else {
// 無効なページ名
+ if ('EUC-JP' === mb_detect_encoding($page)) {
+ $page = mb_convert_encoding($page, 'UTF-8', 'EUC-JP');
+ $body = make_pagelink($page);
+ return array(
+ 'msg'=>'maybe this page?',
+ 'body'=>$body
+ );
+ }
return array(
'msg'=>$_title_invalidwn,
'body'=>str_replace('$1', htmlspecialchars($page),
*** PukiWiki 1.5.4 での対策 [#ud3d0591]
EUC-JPの日本語文字のうちそのバイナリ列をUTF-8文字として解...
与丐丕丙両个丱丶丹丼丿乂乃之乏乖乘乢亂亅了予亊于亞亟亠亡...
仗任伐伴但佑余佞併侫侶促俗俵側傍傳僂僉僊働僖僚僞僣僥僭僮...
儺儻儼儿兀兌兒兔兢八六兵其典冥凌函分判則剖劉劬劭労劵劼勁...
勸勹匆匈匍匏匐匕匚匣匯匱匳匸匹匿區半卒単即友反叩同名吻呂...
哭哮哲哺哽唏唔售唯唳唸唹啀啅啌啖啗啜啝啣喀喊喙嗇嘆噴噺嚢...
坊坎坏坡坦坩坿垈垉垓垠垤垪垰垳埀埃埆埒埔埜堂塀塙填墳夕多...
妣妨妲姆姙姚姜姨姫娉娑娘娚娜娟娥娵娶婀婁婉婢婪婬婿媚媛媼...
屏屐展属屬屮屶屹岌岑岔岫岬岶岷岻岼岾峅峇峙峠峩峪峭峺峽崋...
年幽庁店廊廖廚廛廝廡廢廣廨廩廬廰廱廳廴廸廼廾弃弄弉弋弌弍...
彌彎彜彝彦彪彫律徴徹必忍忘忙忰念息悄悋悒悖悗悛悠悧悩悴悵...
惻愀愃愆愍愎愕愡慍慮憂憤憧懲戞戡截戮戰戲戳房扁扎払扛扞扠...
抜抬抻担拆拏拑拔拗拿挑捉捗捻掠探揃揖損摘撚撞撤撻擂擅擇擒...
擶擺擽攀攅攘攜攣攤攫攬攴攵攷敵文旅族旦昿暢暴暸曄曖曚曠曦...
朦朧未朮朶朷朸朿杁杆村杙杞束杠杣杤杰枉柊某柚桧棆棔棕棗棚...
椨椪椰椶椹椽楔楙楜楫楮楴楷楸楹楼楾榔標樽檗檪檬檳檸檻櫂櫃...
欟欷欸欹歃歇歉歎歐民氷沸沺法泙泛泡泥泪泯洌洒洙洞洟洫洳洵...
涎涓涕涵淇淡淵淹添渊渕測湊湛湧溌溜溺滴滷漂漏漓漫漾潘潛潦...
澡澣澤澪澳澹濂濃濆濔濕濘濟濡濤濬濳炉炭烹焚無熱燃牒牟牢物...
畑留畠畢略疋痢発百的盜直眠眺瞳矛短砲硫硲祐祢票禄福禰稔稗...
箱箸篭粉粍粒粘糞納紐紛続綻縫纏罰老耽聞聴聾肇肋肌肘胞胴能...
菱萄萌葎董葱蓑蓬蓮蔓蔵蕩藤蘖蘗虜蛤蜂蜜蝋蝶融衍表袖裏裕裡...
謄謬谷豆豊豫豹貼賂賊贈超足路跳踏転輸轍辧辰辿迭逃透速造連...
醗里釘鉄鉢銅銚鋒錬録鏑鐙長閥闘陶陸隆隼雄離雰霧露霸韮頂頭...
鳥鳩鳳鴇鵡鵬麓鼎鼻龍
これ以外の文字が1文字でも含まれているページであれば、 mb_...
さらに、mb_check_encoding($eucjp_page, 'CP51932') がTRUE...
旧URLにアクセスした場合でもUTF-8変換後の同盟ページにアク...
救えない (リダイレクトされない) のはUTF-8として解釈しても...
これは十分少ないと推測できる。
調査用コード:
for ($i = 127; $i <= 65536; $i++) {
$c = IntlChar::chr($i);
$c_eucjp = mb_convert_encoding($c, 'CP51932', 'UTF-8...
$c_utf8 = mb_convert_encoding($c_eucjp, 'UTF-8', 'CP...
if ($c === $c_utf8) {
if (mb_check_encoding($c_eucjp, 'UTF-8')) {
echo $c;
}
}
}
PageURIHandler を使って対策
pukiwiki.ini.php:
// Page-URI mapping handler ( See https:// pukiwiki.osdn...
class EucjpUtf8RedirectPageURIHandler extends PukiWikiSt...
function filter_raw_query_string($query_string) {
if (! $query_string) {
return $query_string;
}
if (strpos($query_string, '&') !== FALSE) {
return $query_string;
}
if (strpos($query_string, '=') !== FALSE) {
return $query_string;
}
if (strpos($query_string, '%') === FALSE) {
return $query_string;
}
$page = rawurldecode($query_string);
if (mb_check_encoding($page, 'UTF-8')) {
return $query_string;
}
if (! mb_check_encoding($page, 'CP51932')...
return $query_string;
}
$utf8_page = mb_convert_encoding($page, '...
if (!$utf8_page) {
return $query_string;
}
$location = get_page_uri($utf8_page, PKWK...
header('HTTP/1.0 302 Found');
header('Location: ' . $location);
exit;
}
}
$page_uri_handler = new EucjpUtf8RedirectPageURIHandler();
UTF-8としてinvalidなページ名のリクエストが来たら、リクエ...
詳細ロジック:
- (1) クエリ文字列中に '&' や '=' が入っていたらリダイレ...
- (2) クエリ文字列中に '%' がなければリダイレクトしない (...
- (3) クエリ文字列の rawurldecode() 結果がUTF-8として正し...
-- UTF-8バイナリとして正しいURLであれば新URLでのアクセス...
- (4) クエリ文字列の rawurldecode() 結果をEUC-JP → UTF-8 ...
-- 旧 EUC-JP のURLとみなす
--------
- コメントありがとうございます。重要度と影響範囲を判断で...
-- [[okkez:memo/改造/UTF-8化#n5876a19]] EUC-JP 時代のペー...
-- この件は、元々EUC-JPで公開していたサイトや、相手方がIn...
-- 汎用化する場合: 上記パッチは UTF-8 化したサイトに対す...
--- 本家に取り込む場合はそのようにするべきだと思います。-...
- official/devからのアクセスがきっかけになった予感が。 --...
-- 実はofficial/devはInterWikiを以前、設定しなおしたので...
- 前後の状況が解ったところで、対応の適切さの件。okkezさ...
-- リダイレクトさせる場合についてはその通りですね。 -- [[...
-- 各種コメントありがとうございます。あれから少し考えたの...
-- ページが存在しない場合でも、validなページ名の場合は移...
- [[開発日記/2015-01-03]]: UTF-8版の利用を推奨、[[BugTrac...
- PukiWiki 1.5.4 のページURLカスタマイズのPageURIHandler...
-- 「EUC-JPの日本語文字のうちそのバイナリ列をUTF-8文字と...
- このサイト (PukiWiki-dev) も 1.5.4 にバージョンアップを...
- すみません、いろいろコードが書いてありますが、最終的に...
- Pukiwiki 1.5.4 であれば自動的に適用されているのではない...
- 適当に開いてた日本語ページ名のURLをエンコードしてURLに...
- 『いろいろコードが書いてありますが、最終的にどれをどう...
-- 例えばこういうURLです: https:// pukiwiki.osdn.jp/dev/?...
- dev限定だったんですね。失礼しました。ありがとうございま...
- ありがとうございます。試してみます。 -- [[harrek]] &new...
#comment
ページ名: