ラベル 文字コード変換 の投稿を表示しています。 すべての投稿を表示
ラベル 文字コード変換 の投稿を表示しています。 すべての投稿を表示

2010年7月19日月曜日

[PHP]: mb_convert_kana()がうまく動かないとき

PHPにはmb_convert_kana()という英数時,スペースの半角文字と全角文字を変換する関数がある.
この関数は日本語を処理するときに非常に便利な関数なのだが,どうもうまく動かない時があるようだ.

そんな時は
mb_convert_kana($str, 'as');
としていたのを
mb_convert_kana($str, 'as', 'utf-8');
としてやると上手くいくことがある.もちろん第三引数の文字コードは環境に応じて変える必要がある.

恐らく,PHPの文字コードauto_detectが上手く動いていないのだと思うが,自分が開発している中では結構この不具合の発生率は高い気がする.

mb_convert_kana()周りで不具合があったときは確認してみるといいと思う.

2008年12月25日木曜日

[PHP]: ディレクトリ内の任意のファイルの文字コードを一括変換

手元のLaTeXファイルの文字コードをまとめてEUC-JPからShift-JISに変換する事があったのでささっと書いてみた.
  • srcDir: 文字コード変換するファイルが入っているディレクトリ
  • dstDir: 文字コード変換したファイルを保存する先のディレクトリ
  • fromEncoding: 変換元の文字コード
  • toEncoding: 変換先の文字コード
  • pattern: $srcDir内で変換対象となるファイルのPerl正規表現パターン
$srcDir = "./hogehoge";
$dstDir = "./hogehoge_sjis";
$fromEncoding = "shift_jis";
$toEncoding = "euc-jp";
$pattern = "/tex$/";

$directory = dir($srcDir);
while(
$filename = $directory->read()){
if(!
preg_match($pattern, $filename))
continue;
$fp = fopen($srcDir."/".$filename, 'r');
$wfp = fopen($dstDir."/".$filename, 'w');
while((
$buff = fgets($fp, 2048)) != false){
fputs($wfp, mb_convert_encoding($buff, $fromEncoding, $toEncoding));
}
}
memoということで.