@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

FoxProへの接続で文字化け

1
投稿者投稿内容
Chikota
常連さん
会議室デビュー日: 2005/09/08
投稿数: 23
投稿日時: 2006-02-17 17:52
VB.NET2003 Englishバージョンを日本語Windows2000上で使用しています。

今回、FoxProデータベースにODBC接続をしてデータを読み込もうとしています。
このFoxProのデータには、英数のほかにタイ語が含まれています。
VB.NETのODBCAdapterを使用してFoxProに接続しデータを取得することはできるのですが、タイ語の部分が文字化けしてしまいます。
Windowsの言語環境設定のでタイ語を規定値にすればタイ語部分も表示することができるのですが、これを日本語、もしくは英語の規定値で正しく表示させる方法はないものでしょうか。

よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-02-18 15:06
実行中のスレッドの、言語設定を変えてしまえばいいのでは?

〆 written by Jitta@わんくま同盟 on 2006/02/18
Chikota
常連さん
会議室デビュー日: 2005/09/08
投稿数: 23
投稿日時: 2006-02-18 22:06
Jittaさん、ありがとうございます。
スレッドに言語設定とのことで、現在のスレッドにCultureInfoを設定してみましたが、相変わらずタイ語は文字化けしてしまいました。

Windowsフォーム上にリストボックスを設置し、ODBCDataAdapterでFoxProからテーブルを参照し、タイ語を含むフィールドをリストボックスに表示することで確認をしています。
コード:
    Private Sub frmBackUp_Load
        Dim culInfo As New CultureInfo("th-TH", False)
        Thread.CurrentThread.CurrentCulture = culInfo

        ODBCDataAdapter.Fill(DsFox1)
    End Sub



CurrentUICultureのほうもやってみましたがだめでした。

MSDNには「CurrentCulture プロパティは言語設定ではありません。」とあるので別のやり方があるのだと思い探してみましたが、当方未熟なため未だに見つけることができません。
申し訳ありませんが、スレッドへの言語設定方法についてもう少し教えていただけないでしょうか。

よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-02-18 22:23
 私が言ったのは、たぶんそれです。

 英語版 Excel を日本語 Windows …というか、アジア言語をインストールして地域を日本にした英語版 Windows …でオートメーションすると、おかしくなったんですね。それで、現象を MSDN オンラインで検索すると、実行スレッドの言語設定を英語にしてくれ、というのがヒットしました。

 詳細を忘れてしまったので、月曜に会社で確認します。
Chikota
常連さん
会議室デビュー日: 2005/09/08
投稿数: 23
投稿日時: 2006-02-19 23:36
Visual FoxProを入手して今回のデータベースを開いたところ、今回のVB.NETとまったく同じ現象となりました。
すなわち、windowsの言語環境をタイ語にセットすれば表示されましたが、その他の環境ではすべて文字化けし、タイ語の入力もできない状態でした。

そこで調べたところ、以下のページにたどり着きました。
<Resources for Visual FoxPro developers and other object-oriented professionals>
http://www.stevenblack.com/INTLUsingAsianCharacters.asp

どうやらVFP自体がダブルバイトの言語を扱う場合にデフォルト環境をその言語の地域に設定する必要があるようです。

引用:
Watch Out Multiple Asian Languages:
While the author has not experimented with using multiple Asian languages on a single system, it has been reported that Foxpro will not support more than one at any given time. Given the way VFP relies on the Windows settings, it would not be surprising if this were true. If multiple Asian languages are required, and they must run simultaneously on the same system, then VFP may not be the platform to use for the application. Reportedly Access can support this requirement, using SQL Server for data.



今回のようにデフォルトの環境を英語もしくは日本語にとどめておきたい場合は、VFPはサポートしないからAccess使えとあります。
残念ですが、ユーザに環境を変更してもらうか文字化けを許容してもらうしかないようです。

結局.NETのコーディング云々じゃなく、VFP側の制限でした。
大変お騒がせしました。

Jittaさん、このような結果になりましたが、ご教授ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)