PDO_ODBC がアクセス UTF-8 アクセント付き文字の取得に失敗しました
問題の説明
を試行してくださいAccess を使用する データベースを MySQL に変換すると、すべて正常に動作しますが、大きな問題が発生します。Access データベースに標準以外の文字が含まれている場合、変換は失敗します。クエリは次のエラーを返します:
「無効な」文字を含むテキスト行を直接出力すると、ブラウザーには黒い四角の中に疑問符が表示されます (そのため、é はこの無効な記号になります)。
注: 同じフォームで、このデータベース アップロードのタイトルのテキスト ボックスに「é」を受け入れ、保存し、表示することができます。また、ページを「名前を付けて保存」して再度開くと、「é」が正しく表示されます。
接続方法は次のとおりです:
以下を含む複数の方法を試しました:
Access で "CurrentDb.CollatingOrder" を試行すると、1033 と表示されます。 , どうやらこれは「英語、ドイツ語、フランス語、ポルトガル語の並べ替えルール」を表す dbSortGeneral です。
何が問題だったのでしょうか? PDO が私のブラウザと PHP が完全に理解していない校正結果を送信しているように感じます。
問題は解決しました
1. 単純だが不完全な修正
実際、Access ODBC から返されるテキストは次のとおりです。 Windows この文字は、Access データベースに Unicode 文字として格納されている場合でも、-1252 文字エンコーディングと一致します。したがって、テーブル「Teams」の例では、
コード
がブラウザに表示されます
2。
を修正する UTF-8 を完全にサポートするには、次のような ADODB 接続とレコードセット オブジェクトで COM を使用する必要があります:
以上がPDO_ODBC が Access から UTF-8 アクセント付き文字を取得できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。