韓国語の名前の人がたくさんいるAccessデータベースがあります。私はDBからのデータをかなり楽しく読んで適切に表示する古典的なASPサイトを持っています。私は現在PHPで別のサイトを開発していますが、韓国語の文字を表示することはできません。私は2つの非常に単純なスクリプトを書いています。一つはASPに、もう一つはPHPで、理由を調べます。phpを使用してMS Accessデータベースからプルすると韓国語の文字が表示されない
ASP:
<%
Response.CodePage = 65001
Set objLoginConn = Server.CreateObject("ADODB.Connection")
objLoginConn.Provider = "Microsoft.Jet.OLEDB.4.0"
objLoginConn.Open "C:\wwwroot\mydb.mdb"
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT firstname FROM mytable"
rs.Open SQL, objLoginConn, 3, 3
while not rs.EOF
response.write("<p>"& rs.fields("firstname").value &"</p>")
rs.movenext
wend
%>
PHP:
<?php
$con = new COM("ADODB.Connection") or die("Cannot start ADO");
$con->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = mydb.mdb");
$SQL = "SELECT firstname FROM mytable";
$rs = $con->execute($SQL);
while (!$rs->EOF) {
echo "<p>".$rs->Fields("firstname")->value."</p>";
$rs->movenext();
}
?>
ASPスクリプトが正しく、すべての名前を出力しますが、PHPスクリプトはさんの負担を出力します?。 ASPスクリプトからResponse.CodePage = 65001
ビットを削除すると、PHPのように?が表示されます。
私は、Response.CodePage = 65001
のPHP等価物を見つけて、header('Content-Type:text/html; charset=UTF-8');
とini_set('default_charset', 'UTF-8');
のようなものを見つけましたが、彼らは仕事をしませんでした。
誰でも正しい方向に向けることができますか?
を参照してください。私はそれらのうちの1つを前に持っていたが、私がそれをどのように解決したか分からない。残念ながら、エンコーディングを設定できる場所はたくさんあります。テーブル、データベース、データベース接続、PHPそれから最後にHTML文書から始まります。これらの '? 'は通常、あなたのエンコーディングでは許可されていない文字に由来します。 – Nobody
両方のスクリプトが同じテーブルにアクセスしているため、ASPスクリプトが機能するにはテーブルとデータベースの部分が正常である必要があります。上記のようにPHPをutf-8に設定しているので、おそらくDB接続のエンコーディングを設定する必要があります。それをどうやって行うのかわからない! – Ben
私はまだCOMを使っていませんでしたが、何かを読んでみました。おそらく '$ con-> charSet = 'UTF8';' before open。私はこの問題が発生したときにMySQLを使用しましたが、これをMySQLで処理する特別な機能があります。 – Nobody