PDO 読み取りオラクル中国語クエリの問題

WBOY
リリース: 2016-06-23 13:53:27
オリジナル
1148 人が閲覧しました

私は基本的にデータベースは初めてで、PHP も初めてです。 PDO を使用して Oracle データベースにリモート アクセスすると、テーブル ヘッダーが中国語になり、クエリ時に結果が生成されません。例: $sql=select * from aaa where station number = 1234; 戻り値は未定義のインデックスです...
解決策。 。 。皆さんありがとうございます


ディスカッション(解決策)への返信

テーブルのファイル名は中国語ですか?
フィルター条件なしでクエリ結果を出力します (断片のみ)

テーブルのファイル名は中国語ですか?
フィルター条件なしでクエリ結果を出力します (フラグメントで十分です)


テーブル名は英語ですが、文字セットの問題かもしれません。 select userenv(' language') from Dual を実行すると、結果は SIMPLIFIED CHINESE_CHINA.ZHS16GBK になります。
print_r を使用して結果を出力します:
Array
(
[ID] => 7883
[???] => 3
[ ?? ] => ?
[????] => 0 )
どうすればいいですか?
ああ、質問を間違えました

フィールド名は明らかに中国語です、これは非常に面倒です
コンソールでフィールド名を英語に変更した方がいいです

ああ、質問を間違えました

あなたのフィールド名は明らかに中国語です中国語、とても面倒です
コンソールでフィールド名を英語に変更した方がいいです

変更することはできません、マスター、このライブラリは私のものではありません、そしてすでに使用されています。それを変更すると、他の人はそれに同意しません。どうすればいいですか。 。 。
あなたの DSN はどのように書かれていますか?

new PDO('oci:dbname=//server name or ip:1521/instance name; charset=zhs16gbk', 'username', 'password');
これは Yes でなければなりません
フィールド名は中国語です。文字セットは間違ってはいけません
ページを utf-8 にする必要がある場合は、読み取りとトランスコードのみを行うことができます
中国語のフィールド名を西洋文字に変更した場合は、文字セットを変更できます対応するエンコードされたデータを取得するには

DSN はどのように記述されていますか?

new PDO('oci:dbname=//サーバー名または ip:1521/インスタンス名; charset=zhs16gbk', 'ユーザー名', 'パスワード') ;
これは必ず存在する必要があります
フィールド名は中国語であるため、文字セットが間違っていてはなりません
ページを utf-8 にする必要がある場合は、それを読み取ってトランスコードするだけです
中国語のフィールド名を変更する場合Western に変更すると、対応するエンコードされたデータを取得するために文字セットを変更できます

この文 charset=zhs16gbk を追加して結果を取得します。竹さん、ご指導ありがとうございました!
竹さん、別の質問をしたいのですが、クエリ結果を utf8 で mysql に転送したいのですが、トランスコーディングにはどの関数が使用されますか?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート