KENT-WEB サポートコーナー 過去ログ [ 0420 ]


記事No: 13024
投稿日: 2014/06/19(Thu) 16:42:49
タイトルLIGHT BOARDをUTF-8で
ID情報: sst_band
投稿者: アソビン
URLhttp://www.sst-band.com/test/

WEBサイトのリニューアルしようと思ってそれに伴いLIGHT BOARDを使用させていただくことにしたのですが、今回から全てUTF-8で作ることにしました。
LIGHT BOARDはShift-Jisを前提として作られているようなので、該当する箇所を全てUTF-8に変更し、ブラウザ上の表示は問題なしになりました。
ただ、キーワード検索がうまく動きません。検索出来ることもあれば出来ない言葉もあります。
記事メンテナンス画面で見ると文字化け(�になっている)している箇所があることから、それが原因かなとも思っていますがよくわかりません。

またlight.cgi内のサブルーチンsearchの処理が全てShift-Jisで行われているようですが、初心者なものでUTF-8での処理に書き換えることが出来ません。
この辺りのやり方を教えて頂けないでしょうか。


記事No: 13030
投稿日: 2014/06/22(Sun) 09:07:47
タイトルRe: LIGHT BOARDをUTF-8で
ID情報: kent
投稿者: KENT

> WEBサイトのリニューアルしようと思ってそれに伴いLIGHT BOARDを使用させていただくことにしたのですが、今回から全てUTF-8で作ることにしました。
> LIGHT BOARDはShift-Jisを前提として作られているようなので、該当する箇所を全てUTF-8に変更し、ブラウザ上の表示は問題なしになりました。
> ただ、キーワード検索がうまく動きません。検索出来ることもあれば出来ない言葉もあります。
> 記事メンテナンス画面で見ると文字化け(�になっている)している箇所があることから、それが原因かなとも思っていますがよくわかりません。
>
> またlight.cgi内のサブルーチンsearchの処理が全てShift-Jisで行われているようですが、初心者なものでUTF-8での処理に書き換えることが出来ません。
> この辺りのやり方を教えて頂けないでしょうか。

検索処理の推察は、全くそのとおりです。
UTF-8での検索ルーチンについては、web mart の find.cgi を参考にしてみてください。


記事No: 13033
投稿日: 2014/06/24(Tue) 15:04:52
タイトルRe^2: LIGHT BOARDをUTF-8で
ID情報: sst_band
投稿者: アソビン
URLhttp://www.sst-band.com/test/

> 検索処理の推察は、全くそのとおりです。
> UTF-8での検索ルーチンについては、web mart の find.cgi を参考にしてみてください。

ありがとうございました。
言われた通りweb martのfind.cgiを参考にして、更にGoogle先生に質問しまくって理解しました!
お陰様で検索処理は勿論、記事メンテナンス画面の文字化けも全てクリア出来ました!
(元々検索処理の前にこちらをクリアしなければならないだろうなと思っていたので)
思っていた通りではありましたがやはりキモになるのは正規表現なのですね。

サブルーチン search内はweb mart同様にUTF-8定義を、
my $byte1 = '[\x00-\x7f]';
my $byte2 = '[\xC0-\xDF][\x80-\xBF]';
my $byte3 = '[\xE0-\xEF][\x80-\xBF]{2}';
my $byte4 = '[\xF0-\xF7][\x80-\xBF]{3}';
と書きましたが、admin.cgi内のサブルーチン cut_str内では、

while($str =~ /([\x00-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF][\x80-\xBF]|[\xF0-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF]|[\xF8-\xFB][\x80-\xBF][\x80-\xBF][\x80-\xBF][\x80-\xBF]|[\xFC-\xFD][\x80-\xBF][\x80-\xBF][\x80-\xBF][\x80-\xBF][\x80-\xBF])/gx) {

と書いてしまいました。これでも動くには動きますがちょっと美しくないですね…。
でも書き方が違っても同じだと分かったりして、これはなかなか面白かったです。勉強になりました。

ありがとうございました。


[検索ページ] [掲示板]