テキストファイルを読み込みデータを作成して出力するプログラムを作成しているのですが国際化させることになりました。そこで問題が‥テキストファイルが日本用はshift_jis、海外用はunicodeで構成されています。shift_jisでの文字列操作は良いとしてunicodeが全然わかりません。海外向けを想定したときに気をつけなければならないこともわかりません。なんでもいいので教えてください。お願いします。特に、unicodeの文字列操作はまったくよくわかりませんので細かい点から教えていただけると光栄です。よろしいお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんばんは。
Wendy02です。>いろいろな方法があるのは知っていますが本等で調べてもいまいちよくわかりません。
プログラム的にUnicode やShift-JISの振り分け辺りなら、それを扱う人なら誰でも知っていることですが、それ以上になると、分らないのです。
私は、以前、インターネット検索で行ったときも、VB系の資料は極端に少ないなぁって思いました。あっても、すごく内容的にお粗末極まりないものだったりします。(英語で調べても、言葉の問題は、ほとんど出てきませんね。おそらく、ドイツ語圏には、これにまつわる話が出ているような気がしますが読めません。私の知っているフランス系のツールは、メールで連絡して初めて国を知ったくらいですが、ドイツは、これも私の知っているものでは、ツールもWebサイトもVB系はバイリンガルに近いですね。おまけに、他言語に良く対応していますね。)
>海外版の操作を考えたとき日本だけの物の感覚で作成してもいいのかと・・・・
それは、なんとも保証できかねるというか、やめておいたほうが無難なところですね。ツール系で、Caption を入れ替えるぐらい以外は、Universal というのはお目にかからないです。
日本で、日本語用のOSと日本語用のツールを使っている限りは、どうしても見えてこないものがあります。Office カテゴリで、中国語バージョンのExcelの話が出ていたので、逆に、聞いてみたのですが、回答が付きませんでした。せめて、OSから全て英語版のPCで試してみなければ、私などは、ぜんぜん自信が持てません。(開発用としてなら、高いものじゃありませんね。)
私は、仮にExcelという名前を出したまででしたが、実際に、そういうように使うとなると、私は、本当になんとも言えません。
>それをExcel に出力し印刷する。
経験的に、特に、この部分が分りません。知っている範疇からするとWordのバリエーションは少ないと聞きますが、Excelは、たぶん、日本やフランス、ドイツかな?独特の仕様を組み込まれている可能性があります。Excelの需要が極めて高いからだそうです。韓国版は、仕様内部が、極めて日本語版と似ているとか?
まさか、Excel-書式-スタイルで、Arial Unicode MS なんて出来ないでしょう?それは乱暴すぎますからね。英米なら、ANSIでいいですから、ほとんど問題でないのですが。少なくとも、そのExcelは、ちょっとまずいかもしれませんね。せめて、その部分だけでも、独自に考えたらどうでしょうか?
最後に、おっしゃっている内容は、分りすぎるくらい分るのですが、VBだけならともかく、他のアプリケーションを絡ませるのは、まったく想像つかないのです。
No.2
- 回答日時:
こんにちは。
この問題をしばらく考えていましたが、具体的なことが書かれていませんので、どのように答えていいか分りませんでした。私は、経験的に、Excelを使う関係で、UnicodeとShift-JIS の行き来に、面倒な作業が必要になるときがあります。それは、最後にも書いてありますが、ExcelのベースがShift-JISだからです。もちろん、StrConv関数で変換できる程度なら問題はありませんが、テキストファイル(CSV)の入出力になると、それでは問題は解決しません。
しかし、Windows XP で、アプリケーションを、最初から、Unicode仕様で作っていって、困ることがあるのかなって思います。しいて言えば、いままでのツールとの互換性が問題があるのかもしれません。
例えば、Vector の中でフリーソフトウェアの中で、あるアプリケーションは、文字をインポート・エクスポートし、Win9xをサポートしていても、完全、Unicode仕様というものがあります。それは、インポート用のプログラムを備えているからでもあるのですが、それで、何か困ったことが発生したというサポート掲示板で読んだ覚えがありません。
そのアプリケーションは、ExcelのCSVを使う関係で、ワークシートが標準でShift-JIS仕様ですから、直接的には、ExcelのCSV の入出力はサポートしていません。(もちろん、直接、出入りすることなど、作者は考えていないだろうし、その作者の責任の及ぶところではないと思います。)
話を戻すと、そのアプリケーションが、完全、Unicode仕様なのは、中国語や韓国語やANSI以外の言語を表示するためにそうしたわけです。単に、ANSIなら考える必要はなかったと思います。専用変換ツールを備えてて、文字言語をUnicodeにするだけですから、Win9x系でも可能なのです。
結論として、ベースをUnicode仕様にしていく限りは、Shift-JISによる問題は、それほどに起こらないだろうと思うのです。(逆はひじょうに難しいだろうなって思います。)Shift-JISとUnicodeを判別するVB系のプログラムは周知のことでしょうから、それはあえて公開しませんが、そんなに複雑ではないと思います。ただ、それだけのことだと思います。
【 Unicode について 】(以下のサイトはとても良くまとまっています。)
参考URL:http://www.psytec.co.jp/tips/0503/
この回答への補足
回答ありがとうございます。
補足させていただきます。
複数のテキストファイルをVBで読み取りそれを照合させてMSFlexGridに表示してそれをExcel に出力し印刷する。といった流れのプログラムなのですが・・・・その読み取るテキストファイルが海外ではunicodeとshift_jisの照合、 日本ではshift_jis同士といったモノになっています。プログラムのなかで自動的に振り分けを行うものにするのは自分でもなんとか思いつくのですが海外版の操作を考えたとき日本だけの物の感覚で作成してもいいのかと・・・・なにか注意をするべきはないかとおもいまして。。。いろいろな方法があるのは知っていますが本等で調べてもいまいちよくわかりません。「それぐらいは知っているだろう」程度のことでもいいので書き込みをよろしくお願いします。
No.1
- 回答日時:
ユニコードからS-JISに変換し、処理を行い、
終わったらStrconv("文字列",vbUnicode)
で戻してやれば良いのでは・・・
ちなみに下記のコードの著作権保持者は、参照URLの
コードを書いた方に聞いてください。
---------------------------------------------
Public Function UnicodeToSJIS(ByRef strUnicode As String, ByRef bytSjis() As Byte) As Long
Dim lngSjisSize As Long 'S-JIS 変換後のサイズ
'いったん文字列を S-JIS に変換し、そのサイズを求める
lngSjisSize = LenB(StrConv(strUnicode,vbFromUnicode))
If lngSjisSize Then 'サイズの取得に成功した場合
'S-JIS 文字列を格納する領域を確保
ReDim bytSjis(lngSjisSize - 1)
'バイト型配列 bytSjis() に S-JIS 変換文字列を格納する
bytSjis = StrConv(strUnicode, vbFromUnicode)
UnicodeToSJIS = lngSjisSize '変換後サイズを返す
End If
End Function
参考URL:http://www.geocities.co.jp/SilkRoad/4511/vb/nkf3 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Windows 8 win8 "ベータ ワールドワイド言語サポートで Unicode UTF-8 を使用"を出したい 2 2023/05/23 19:57
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) iMacのターミナルにユニコード文字を出す方法 2 2022/06/22 21:48
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- Ruby パイソンでテキストファイルが読み込めない 1 2022/11/14 16:42
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
Excel-VBAのmsgBox()の不思議
-
bmp→jpgに、jpg→bmpに
-
エクセルVBAの自動変換機能?
-
UTF8→ShiftJISに変換したいです!
-
10進数をBCDに変換する方法
-
家電製品の電力周波数を変える機械
-
VBAを使って二進法計算
-
シーケンサのCPUはニーモニック...
-
線対称の角度を求める
-
c++でmatからvectorへの変換の...
-
自作ソフトキーボードによる文...
-
VC++2005で、CString型に16進...
-
VB6からVB2010への変換について
-
SJIS⇔UTF-8の文字コード...
-
MATLAB用のプログラムをScilab...
-
VC++2005 CStringをshortに変換
-
StrConvの使い方について教えて...
-
VisualBasicをC++に変換する方...
-
php
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
Excel-VBAのmsgBox()の不思議
-
3のつく数字と3の倍数のみを表...
-
bmp→jpgに、jpg→bmpに
-
Mac 乗数の入力方法
-
分を時間に変換するプログラム
-
家電製品の電力周波数を変える機械
-
10進数をBCDに変換する方法
-
VB6からVB2010への変換について
-
C/C++→JAVAに変換するツール
-
C#でのpngからbmpへの変換について
-
【EXCEL】カナ、ひらがなを英字...
-
数値英単語変換プログラム
-
エクセルVBAの自動変換機能?
-
なぜ通信には16進数文字列が使...
-
画像ファイル変換(Tiff→PDF)
-
UTF8→ShiftJISに変換したいです!
-
c++でmatからvectorへの変換の...
-
SJIS⇔UTF-8の文字コード...
-
VB.NETをJavaに変換するツール...
おすすめ情報