初めて自分の家と他人の家が違う、と意識した時

postgresql 9.1を文字コードUTF8でインストールして
windows 7 professional sp1 x64で
Visual Studio 2010 C++ MFCプロジェクトでアクセスするプログラムを作成しているのですが、

libpqとodbcのPostgreSQL ODBC Driver(UNICODE) x86、いずれでも、下記のように一部がCStringA(Shift_JIS?)で操作するプログラムになっています。

あまり気にすることではないのかもしれないのですが、
UTF8をSHIFT_JISで扱おうとすると足りない特殊文字などが出てこないかと懸念しています。

libpqとodbcのPostgreSQL ODBC Driver(UNICODE) x86、または別のものでもよいので
MFC C++ で UTF8で操作することはできないのでしょうか。
またはそのような懸念は無用なのでしょうか。

どなたかご教授よろしくお願い致します。



------------------------------------------
libpq
result = PQexec (connection,CStringA(sql));
if (result == NULL)
{
st.Format( "%s\n", PQerrorMessage (connection));
OutputDebugString(CString(st));
}

------------------------------------------
odbc

CStringA param = "ああいう";
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR,
param.GetLength() / 2, 0, (SQLTCHAR*)((LPCSTR)param), 0, NULL);

A 回答 (1件)

Postgresはサーバの文字セット(UTF-8)とクライアント側の文字セット(SHIFT-JIS)


を自動で変換する機能を提供しています。
libpqを使っているのでしたらPQClientEncodingを使って変換を明示的に
指定できます。

参照 22.2.3. サーバ・クライアント間の自動文字セット変換
http://www.postgresql.jp/document/9.1/html/multi …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A