2012-01-30 13 views
1

韓国語の名前の人がたくさんいる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

を参照してください。私はそれらのうちの1つを前に持っていたが、私がそれをどのように解決したか分からない。残念ながら、エンコーディングを設定できる場所はたくさんあります。テーブル、データベース、データベース接続、PHPそれから最後にHTML文書から始まります。これらの '? 'は通常、あなたのエンコーディングでは許可されていない文字に由来します。 – Nobody

+0

両方のスクリプトが同じテーブルにアクセスしているため、ASPスクリプトが機能するにはテーブルとデータベースの部分が正常である必要があります。上記のようにPHPをutf-8に設定しているので、おそらくDB接続のエンコーディングを設定する必要があります。それをどうやって行うのかわからない! – Ben

+1

私はまだCOMを使っていませんでしたが、何かを読んでみました。おそらく '$ con-> charSet = 'UTF8';' before open。私はこの問題が発生したときにMySQLを使用しましたが、これをMySQLで処理する特別な機能があります。 – Nobody

答えて

2

私は解決策を見つけました。私が思う65001がUTF-8である

$con = new COM("ADODB.Connection", NULL, 65001);

:私はそうのようなDB接続のエンコーディングを設定する必要がありました。これが最善の方法であるかどうかは分かりませんが、それは私のために働きます!

0

$ con =新しいCOM( "ADODB.Connection"、NULL、CP_UTF8);

でも動作します。

COM::__construct (string $module_name [, mixed $server_name [, int $codepage [, string $typelib ]]]) 

$module_name = "ADODB.Connection" 
$server_name = NULL (using default, localmachine) 
$codepage = CP_UTF8 

私はこれは、符号化の問題であることをかなり確信しているhttp://php.net/manual/en/class.com.php

関連する問題