- 締切済み
Shift-JISの半角英字が正しく表示されない
【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); ?>
- みんなの回答 (2)
- 専門家の回答
お礼
ご回答ありがとうございます。早速、試してみましたが、駄目みたいです。 アクセント付き文字というんですね。下記URIなどでもうちょっと調べてみます。 http://cosmoshouse.com/tools/acc-conv-j.htm