アプリ版:「スタンプのみでお礼する」機能のリリースについて

【Eclipse PDTのバージョン】HELIOS 1.3.0
【XAMPPのバージョン】1.7.4
【OSの種類とバージョン】Windows Vista Business 32bit(x86)版
【ブラウザの種類とバージョン】IE8
【その他環境情報】Apache2.2.17 PHP5.3.5.0 Subversion 1.6.15 WinCacheGrind1.0.0.14

下記プログラムを実行(ExcelデータにODBC接続して抽出)し、ブラウザで表示(UTF-8)させると、一部の半角英字が正しく表示されません。例えば、「Händel」→「Handel」、「Chopin, Frédéric François」→「Chopin, Frederic Francois」、…。OSをLinuxにして、データベースを使用(すべてUTF-8)すると、解決するでしょうか?

<?php
$dsn = "database_4";
$user = "";
$pass = "";

$enc_disp = "UTF-8";
$enc_db = "SJIS";

function cnv_enc($string, $to, $from) {
$det_enc = mb_detect_encoding($string, $from . ", " . $to);
if ($det_enc and $det_enc != $to) {
return mb_convert_encoding($string, $to, $det_enc);
} else {
return $string;
}
}

$conn = odbc_connect($dsn, $user, $pass) or die("接続エラー");

$sql = "SELECT * FROM [music$]";
$res = odbc_exec($conn, $sql) or die("データ抽出エラー");

echo "<table border=\"1\">";
echo "<tr>";
echo "<td>ID</td>";
echo "<td>大分類</td>";
echo "<td>日本語作曲家名</td>";
echo "<td>英語作曲家名</td>";
echo "</tr>";
$music_1_ID = @$_POST['music_1'];
$i=0;
while ($row = odbc_fetch_row($res)) {
if ((int)odbc_result($res, "music_1_ID")==$music_1_ID) {
$composer_ID = (int)odbc_result($res, "composer_ID");
if ($i!=$composer_ID) {
echo "<tr>";
echo "<td>".(int)odbc_result($res, "composer_ID")."</td>";
echo "<td>".cnv_enc(odbc_result($res, "class_1"), $enc_disp, $enc_db)."</td>";
echo "<td>".cnv_enc(odbc_result($res, "composer"), $enc_disp, $enc_db)."</td>";
echo "<td>".cnv_enc(odbc_result($res, "composer_english"), $enc_disp, $enc_db)."</td>";
echo "<td><a href="."music_11.php?No=$composer_ID".">"."作品"."</a></td>";
echo "</tr>";
}
$i=$composer_ID;
}
}
echo "</table>";

odbc_close($conn);
?>

A 回答 (2件)

アクセント付き文字は、UTF-8なら問題なく扱えます。



動作確認していませんが、「$enc_db = "SJIS-win";」にすれば扱えると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。早速、試してみましたが、駄目みたいです。

アクセント付き文字というんですね。下記URIなどでもうちょっと調べてみます。

http://cosmoshouse.com/tools/acc-conv-j.htm

お礼日時:2011/05/16 15:30

「Händel」「Chopin, Frédéric François」


どう見てもSHIFT-JISの範囲外の文字(ISO 8859-1ならあるのかな)が入ってますね。
これでは変換できないのでは?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。もう少し調べてみます。

お礼日時:2011/05/16 15:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!