• ベストアンサー

ファイルを開いてに読み込みとクリップボード経由との相違点

文字コード VB2008でエディタの作成の勉強をしています。 質問は下記です。  ・このエディタでメモ帳などで作成したファイルを開いて読むと   文字コードの違いで全角文字が文字化けする。  ・しかしクリップボード経由でコピー、貼り付けを行うと文字化   けはおこらない。 VB2008はUnicodeなのでs-jis のファイルを読むと文字化けをするこ とはわかりますが、クリップボード経由ではなぜ文字化けしないの でしょうか。  よろしくお願いします。

  • binm
  • お礼率92% (174/188)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

標準のエディットコントロールには、文字コードの変換の機能がついてないからでしょう。 そういう場合、開いたファイルをテキストバッファに読み込んでいるだけなので。 そのまま表示されます。 文字コードの変換機能があるエディットコントロールは、ファイルをメモリーストリーム上に読み込み、変換をし、テキストバッファに転送したりなどします。 クリップボードは、クリップボードに入れるときに、 CF_TEXTや、CF_UNICODETEXTを指定することが出来ます。 クリップボードから出すときは、ある程度OSが自動で変換してくれます。CF_UNICODETEXTで入れたものをCF_TEXTで取り出すことも可能です。(化ける可能性もありますが) CF_TEXTの場合、OSのデフォルトの文字コード日本語ならSJISになります。 貼り付けるアプリケーション側が、unicodeに対応していなければ、 CF_TEXTで取り出そうとします。 (Vistaは分かりません)

binm
質問者

お礼

具体的な回答を頂きよくわかりました。 有難うございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

そんなこと聞くまでもなく、違いにソフトが対応しているからだよ。 ただし、どのように仕組みの詳細とか、どうコードを組んでいるかは、通常公開情報では無いので、調べまくらないとわからないが。 後者の部類のことを聞きたいのかもしれないが、知りたくてもとりあえず、辛抱しないとならなくて、将来持続的に質問者がその分野を勉強をして行かないと、判らないものがほとんど。仕組みに関する、専問的な前提となる知識や付随知識がいっぱい必要なものが多い。 ここの専門的な事項の質問コーナーでもないところに、質問しても、回答は無いだろう。本件はそこまでのものではないが。Googleででも「クリップボードとは」「クリップボード 仕組み」などで照会すれば、少しは感じがつかめるかもしれない。 コピーだって、画像には色々なデータ形式のものがある。文字コードもそう。ある場合は貼り付けて元のように見えないでは、一般的な商品の機能にはなりえない。そこで開発者の苦労が有る。それはあえて公開されない。何処かでまずコードの種類の違いを捉えているはず。そして対応するかどうかは、色々な判断が有る。 コンピュタ関連では生物の一部の機能のように自然調整力は無いので、全て作成者が、違うものには、違いを意識させないようなソフト(プログラム)が必要で、それでも、色々なソフトを比べると、バラバラは、どうしても出てくる。メモ帳はテキストに限り、原初的な部分を担当するもので、その後の進歩などは取り入れられて無い面はほとんど。当初コンピュタ処理は文字数字から始まった(色々な意味で文字しか扱えなかった)事を忘れないよう。

binm
質問者

補足

具体的な回答を期待していたのですが、いずれにしても 長文のご意見有難うございました。

関連するQ&A

  • クリップボードの容量を大きくしたい

    Windowsでクリップボードを経由してコピー貼り付けをする場合ですが、画像などでファイルの容量が4MBを超えるとだめのようです。 クリップボードの容量をもっと大きく設定することは出来るでしょうか。

  • Wordのクリップボード

    Wordで文字列をコピー(メニュー「編集」-コピー や Control+C)を行うと、 クリップボードに入ります。 しかし、コピーしてすぐ貼り付けを行うときでもクリップボードに入ります。 クリップボードにたくさんアイテム(文字列)が入っていると うざったいので、 できればコピー後すぐ貼り付けるものはクリップボードに入れたくないのですが、 クリップボードに入れるものとそうでないものを分けるにはどうすればよいですか。 また、クリップボードに入っているアイテムのうちの一部のみを消去する(選んだものだけクリア)にはどうすればよいですか。 Word2000です。

  • VBで出力したCSVファイルの文字化けについて。

    VBで複数のCSVファイルから必要なデータのみを 新たなCSVファイルに出力するアプリケーションを作成しています。 処理自体は出力ファイルの作成まできちんとできるのですが、 エクセルで開くと文字化けが起きてしまいます。 文字化けが起きるのは漢字と片仮名(全角、半角両方)です。 ちなみにNotepadで開くと文字化けは起きていませんでした。 また、エクセルのほかにwordpadで開いても文字化けが起きていました。 入力用のCSVファイルの文字コードは分かっていません。 ファイルの読み込みはGetEncoding("Shift_JIS")で読み込んでいます。 文字化けに関する質問は他にも多数あり重複しているかもしれませんが 宜しくお願いします。

  • バッチファイルでクリップボードの文字を使う

    バッチファイルにて フォルダを作成し、ファオルダの名前にクリップボードにコピーされている文字を使いたいのですが、お分かりの方、教えてください。お願いいたします。

  • クリップボードからの貼り付けのフック

    VB.net、C#、.net framework2005で、 クリップボード拡張ソフトを開発しております。 クリップボードへの入出力が起こる直前にフックをかけたいです。 コピー・切り取り操作(ClipBoardへの入力)については クリップボードチェーンに自分を加え、WM_DRAWCLIPBOARDをハンドルすることで解決できました。 貼り付け(ClipBoardからの出力)についてはどのようにすれば実現できますでしょうか? 貼り付けイベントが起こった時に、チェーン内のプログラムにそれを通知するようなWindowsメッセージがあるかと思い、それらしいものを探してみたのですが、利用できそうなものがありませんでした… 具体的には、 ・入力時に、データを加工して仮想クリップボードに格納 ・出力時に、仮想クリップボード内のデータを再度加工して出力(貼り付け) という処理を実現したいです。 宜しくお願い致します。

  • 必要とする領域をクリップボード経由に貼り付けとは

    『必要とする領域をクリップボード経由に貼り付け』 の言葉を理解しても… 実際どうやるのかがよくわかりません。 現在、私は『文ちゃんのグラフ』を使う為に↓をや実行しているのですが… 必要なスクリーンキャプチャーソフト(SCAPを持ってきました)を持って来ても 『必要とする領域をクリップボード経由に貼り付け』がわからない為、滞ってます。 【数学の教師をしているので、配布する資料にグラフを入れたい場合があります.Wordを使っているので数式はきれいに入力できます(≦≧を入れることができないのでちょっと困ります)がグラフは簡単には入力できません.そこで簡単にグラフが描けるツールを作ってみました.OLEのサバーの機能はないので、スクリーンキャプチャーソフト(SCAP,SHOOT!などは別途用意してください)で必要とする領域をクリップボード経由で貼り付けてください.】 面倒なのは承知ですが誰か助けて下さい。 ―――――― 『文ちゃんのグラフ』に拘る理由は以下の通りです。 ちなみに、『文ちゃんのグラフ』以外に『BearGraph』でやったのですが… 例外だったらしく無理でした。 確かに図表には描けないグラフは(高校数学にも)存在しますが 今回はそうではないはずなので 高校程度の数学なら描けると謳っている『文ちゃんのグラフ』を使う次第です。

  • クリップボードソフトで

    テキストエディタで改行されている複数行の文章をクリップボードソフトに一度で1行ずつコピーをしたいのですが良い方法はありませんでしょうか? 例)1行目:○○○○○○○   2行目:○○○○○○○   3行目:○○○○○○○    ・     ・  このような100行以上ある文章を1行ずつ クリップボードソフトにコピーをして 1行ずつ別の場所に貼り付けをしたいのです。 100回以上コピーのショーカットキーを押すのは 大変なので、別の方法を探しています。 よろしくお願いします。

  • テキストファイル(英語&日本語)を読む時に文字化けいたします

     今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  テキストファイル(ほとんどが自作のFortranコードで,英語と日本語のみで ございます)を読み込みたいのですが,全角文字の読み込み (下記コードになります)で文字化けいたします..  Dim SR As New System.IO.StreamReader(FileName, System.Text.Encoding.GetEncoding(51932))   '↑ここのエンコード(?)が怪しいのでは,などと考えている次第です.  Dim text As String = SR.ReadToEnd()  MsgBox("/" & text & "/")    '↑「text」が化けます...  エンコード(?いまいち理解しておりませんorz)の種類がおかしいのでは, というところまでなんとか行き着きまして,色々と検索いたしておりますと  http://www.atmarkit.co.jp/fdotnet/dotnettips/013enumenc/enumenc.html にまとめてくださっておりましたので,思いつく数字を「51932」の代わりに 入れてみましたが,どれも全角文字が文字化けいたします.. 「0 shift_jis 日本語 (シフト JIS) 」 「932 shift_jis 日本語 (シフト JIS) 」 「1200 utf-16 Unicode 」 「51932 euc-jp 日本語 (EUC) 」「1200 utf-16 Unicode 」  もしかすると別の部分に問題があるのかもしれませんが.. 調べておりますと, http://dobon.net/vb/bbs/log3-25/15325.html などよく似た症状なのですが,真似いたしましても解決いたしませんでした・・  もし,日本語と英語のテキストファイルすべてに通用するようなお勧め エンコード方法のようなものがございましたら,ご紹介いただきたくお願い申し上げます.  お詳しい方がいらっしゃいましたら,是非ともアドバイスいただきたく どうぞよろしくお願いいたします

  • クリップボードからファイル名を取得

    クリップボードについて教えていただきたいと思います。 コピーを行うとクリップボードにはコピーした内容が保存されます。 そのコピーを行った内容のファイル名(できればstring型で)を取得する方法を教えていただけたらと思います。 文字列・保存されていない画像の場合にはファイル名は存在しないので、ファイル名の存在する画像やファイルについての方法をお願いします。

    • ベストアンサー
    • Java
  • クリップボード拡張ソフト

    一度、質問したのですが、回答が一つもなく、日日が経つと全く見てくれなくなるようで閲覧数が増えず、新たに立て直しました。前回の質問が取り消しもできないようで、どうしようか悩んだ末、新たに立てた次第です。重複している状態ですが、お気を悪くしている方、いらっしゃるでしょうか。申し訳ないです。 まず簡単に説明します。パソコンで「コピー」をしたとき、Windowsではクリップボードというものに貼り付けられています。そして、「貼り付け」をしたときに、クリップボードから読みだされます。 コピーできるのは通常1つだけです。webサイトの情報をコピーすると、html形式でコピーされます。 このとき、文字色やフォントの大きさもそのままコピーされています。 クリップボード拡張ソフトは、このコピーから貼り付けまでを、拡張したものです。 だいたいのソフトが複数のコピーをクリップボードに保持できます。 私がやりたいのが、この機能なのですが、それらしいものをいくつか試したのですがhtml形式でコピーできず、テキスト形式で貼り付けになってしまうのです。 どなたか、html形式で複数コピーできるものを教えて頂けないでしょうか

専門家に質問してみよう