2010年1月13日水曜日

WinSCP で UTF-8 のファイル名が文字化け

WinSCP で UTF-8 のファイル名が文字化けしてしまった。

普段 Linux で日本語のファイル名を扱うようなことはないのですが、簡単にニックネームとファイル名を一致させたくて手抜きをしました^^;

WinSCP で保存ディレクトリーを見ると見事に文字化けしている…

早速ググって見ると設定の SFTP になにやらあるらしいことが書いてあるのですが、私の使っているバージョン (4.1.9) には無い><;

速攻でバージョンアップ(4.2.5)して見るが変わらず…

で、設定を見てみると「環境」のところに「ファイル名をUTF-8でエンコード」というのが「自動」になっている。で、これを「オン」にしてみたところちゃんと表示できた\(^o^)/

2010年1月8日金曜日

PHP: session.use_trans_sid = 1 のバグ

携帯用サイトで session.use_trans_sid = 1 にしてセッションIDを URL に付けるようにしたのですがたまにリンクがおかしくなる現象に遭遇しました。

具体的には、<a href="abc.php?SID=xxxxxx"> となるべきところが <a href="abc.php"?SID=xxxxxx> とセッションIDが終端の " の後ろに付いてしまうというものです。

そこで下記のプログラムを走らせてみたところ見事に再現したので、まぁ PHP のバグだろうなぁと思っております。

■ソース
<?php
ini_set( 'session.use_cookies', '0' );
ini_set( 'session.use_trans_sid', '1' );
ini_set( 'session.use_only_cookies', '0');
session_start( );
for ( $i = 0; $i < 1000; ++ $i )
{
?>
<a href="test.php?test=<?php echo $i; ?>"><?php echo $i; ?></a><br />
<?php
}
?>

■結果
<a href="test.php?test=0&SSID=edttcli7iqip5vnsqu8a0mgvl4">0</a><br />
<a href="test.php?test=1&SSID=edttcli7iqip5vnsqu8a0mgvl4">1</a><br />
中略
<a href="test.php?test=99&SSID=edttcli7iqip5vnsqu8a0mgvl4">99</a><br />
<a href="test.php?test=100"?SSID=edttcli7iqip5vnsqu8a0mgvl4>100</a><br />

どうも、タグの中で <?php ?> を使った場合に発生する現象のように思えたので下記のように書き換えてやったところ、問題が発生しなくなりました。

■ソース
<?php
ini_set( 'session.use_cookies', '0' );
ini_set( 'session.use_trans_sid', '1' );
ini_set( 'session.use_only_cookies', '0');
session_start( );
for ( $i = 0; $i < 1000; ++ $i )
{
$s = '<a href="test.php?test="' . $i . '">';
?>
<?php echo $s; ?>"><?php echo $i; ?></a><br />
<?php
}
?>