C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VBのコードをWordにコピペすると文字化けする


(過去ログ 138 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■81213 / inTopicNo.1)  VBのコードをWordにコピペすると文字化けする
  
□投稿者/ タリアン (1回)-(2016/09/02(Fri) 12:51:44)

分類:[.NET 全般] 


VB.NET2010を使っているのですが
コードの中の全角文字をWord2010にコピペすると

インスタンス変数

イCン?スXタ^ン?スX変I数?
のように変な文字が入ってしまいます。
これはどうすれば回避できますか?

半角文字だとこの問題は起きないので
Unicodeか何かの問題でしょうか?



引用返信 編集キー/
■81214 / inTopicNo.2)  Re[1]: VBのコードをWordにコピペすると文字化けする
□投稿者/ タリアン (2回)-(2016/09/02(Fri) 13:08:19)
Unicodeで貼り付けを使うことで文字化けは防げることがわかりました
しかし、それだと文字の色やフォントが失われてしまいます
どうすれば良いですか?
引用返信 編集キー/
■81216 / inTopicNo.3)  Re[2]: VBのコードをWordにコピペすると文字化けする
□投稿者/ 魔界の仮面弁士 (868回)-(2016/09/02(Fri) 13:55:11)
2016/09/02(Fri) 18:01:22 編集(投稿者)

No81213 (タリアン さん) に返信
> VB.NET2010を使っているのですが
> コードの中の全角文字をWord2010にコピペすると

もしかしたら、Word 2010 側の問題かもしれません。
ワードパッドに貼り付けて見たらどうなりますか?



No81214 (タリアン さん) に返信
> Unicodeで貼り付けを使うことで文字化けは防げることがわかりました

手元の VB2010 で確認してみましたが、コピー元の .vb ファイルの
エンコードが Shift_JIS でも UTF-8 でも、
コピー結果に変化は見られませんでした。


クリップボードの内容も監視してみましたが、
以下のフォーマットと順序で格納されてきており、
いずれのデータも、コピーの段階で化けている様子は
みられませんでした。



[#1] "DataObject"
 4 バイト長バイナリ(0xB2980)

[#2] CF_UNICODE_TEXT (13)
 エンコード: UTF-16(リトルエンディアン)
 改行コード:CR+LF
 終端NUL:あり

[#3] "Rich Text Format"
 エンコード: ASCII
 改行コード:CR+LF
 終端NUL:あり

[#4] "Ole Private Data"
 152 バイト長バイナリ

[#5] CF_LOCALE (16)
 4 バイト長バイナリ(0x1041)

[#6] CF_TEXT (1)
 エンコード: CP932(既定の Windows の ANSI コード ページ)
 改行コード:CR+LF
 終端NUL:あり

[#7] CF_OEMTEXT (7)
 エンコード: 既定の OEM コード ページ
 改行コード:CR+LF
 終端NUL:あり



> しかし、それだと文字の色やフォントが失われてしまいます

上記のウチ、書式付なのは "Rich Text Format" だけですが、
それは以下の内容になっていました。
RTF コードそのままで記載します。(掲示板に貼れるかな…)

下記を拡張子 .rtf として保存すると、ワード等で見れるはず。

{\rtf\ansi{\fonttbl{\f0 MS Gothic;}}{\colortbl;\red0\green0\blue255;\red43\green145\blue175;\red0\green128\blue0;}\f0 \fs19 \cf1 Module\cf0 \cf2 Module1\cf0 \par \par \cf1 Sub\cf0 Main()\par \cf3 '\uc1\u12452?\uc1\u12531?\uc1\u12473?\uc1\u12479?\uc1\u12531?\uc1\u12473?\uc1\u22793?\uc1\u25968?\cf0 \par \cf1 End\cf0 \cf1 Sub\cf0 \par \par \cf1 End\cf0 \cf1 Module\cf0 \par \par }

引用返信 編集キー/
■81220 / inTopicNo.4)  Re[3]: VBのコードをWordにコピペすると文字化けする
□投稿者/ タリアン (3回)-(2016/09/02(Fri) 16:42:20)

ワードパッドでも試してみましたが結果は同じでした。

Win7とWin8で試していますがいずれも同じです。

ちなみにVB2010のExpressですが
それが原因でしょうか?

VBのエンコードはどこで変えることができますか?

あと
「書式付なのは "Rich Text Format" だけですが」
というのはどういう意味でしょうか?
VBからコピーして
そのままWord上で貼り付けするのと何が違いますか?





引用返信 編集キー/
■81223 / inTopicNo.5)  Re[4]: VBのコードをWordにコピペすると文字化けする
□投稿者/ 魔界の仮面弁士 (869回)-(2016/09/02(Fri) 22:34:57)
No81220 (タリアン さん) に返信
> Win7とWin8で試していますがいずれも同じです。

こんなの事象がありました。参考情報として。

全角文字の直後の半角数字がペーストされない
http://bbs.wankuma.com/index.cgi?mode=al2&namber=54599&KLOG=92


Visual Studio 2010のコードのコピー&ペーストにおける文字化け問題の回避策
http://d.hatena.ne.jp/Yamaki/20110302/1299055640


Visual Studio 2010 からソースコードを PowerPoint にコピーすると文字化けする
https://ufcpp.wordpress.com/2010/05/11/visual-studio-2010-%E3%81%8B%E3%82%89%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92-powerpoint-%E3%81%AB%E3%82%B3%E3%83%94%E3%83%BC%E3%81%99%E3%82%8B%E3%81%A8%E6%96%87%E5%AD%97/



> ちなみにVB2010のExpressですが
> それが原因でしょうか?

「Express」と「Professional 以上」とで、動作が異なることも
あるかもしれませんが…手元に Express が無いため当方では検証できません。

上記の URL にもあるように、過去のバージョンでは
クリップボードのコードが化ける現象を経験した事があるのですが、
少なくとも現在の当方環境では、文字化けを再現できませんでした。


なお、こちらの環境は下記の通り。
そちらの環境では、Service Pack 1 は適用してありますか?


Windows 7 Professional Service Pack 1 64 ビット

Microsoft Word 2013 (15.0.4849.1000) MSO (15.0.4849.1000) 32 ビット

Microsoft Visual Studio 2010 Version 10.0.40219.1 SP1Rel
Microsoft Visual Studio 2010 Ultimate - 日本語 (KB2529927) 用の修正プログラム KB2529927
Microsoft Visual Studio 2010 Ultimate - 日本語 (KB2542054) 用の修正プログラム KB2542054
Microsoft Visual Studio 2010 Ultimate - 日本語 (KB2548139) 用の修正プログラム KB2548139
Microsoft Visual Studio 2010 Ultimate - 日本語 (KB2549864) 用の修正プログラム KB2549864
Microsoft Visual Studio 2010 Ultimate - 日本語 (KB2635973) 用の修正プログラム KB2635973
Microsoft Visual Studio 2010 Ultimate - 日本語 (KB2644980) 用のセキュリティ更新プログラム KB2644980
Microsoft Visual Studio 2010 Ultimate - 日本語 (KB2645410) 用のセキュリティ更新プログラム KB2645410
Microsoft Visual Studio 2010 Ultimate - 日本語 (KB2890573) 用の修正プログラム KB2890573
Microsoft Visual Studio 2010 Ultimate - 日本語 (KB2938807) 用の重要な更新プログラム KB2938807
Microsoft Visual Studio 2010 Ultimate - 日本語 (KB3002340) 用の修正プログラム KB3002340
Microsoft Visual Studio 2010 Ultimate - 日本語 Service Pack 1 (KB983509) KB983509


> VBのエンコードはどこで変えることができますか?

ソリューションエクスプローラーで、
各ファイル(Module1.vbなど)を選択し、
[ファイル]-[名前を付けて 何某.vb を保存]
を選択すると、右下の[上書き保存]ボタンの横に、
エンコード指定のボタンが現れます。

もし、Express で上記が使えない場合は、
別のエディタ(メモ帳など)を用いて、
Shift_JIS で書いた Module1.vb や
UTF-8 で書いた Module2.vb を用意し、
それを開発環境に開かせてみてください。



> 「書式付なのは "Rich Text Format" だけですが」
> というのはどういう意味でしょうか?

当方環境の VB2010 でコードをコピーした場合、クリップボードには
No81216 に記載した 7 種類の形式のデータが送られていました。

(Alt キーを押しながらドラッグ選択した文字列の場合は、
 さらに矩形選択形式のデータも送られます)


そしてその中で、Word に貼り付けられる形式となるのは以下のデータです。
このうち、書式付は "Rich Text Format" だけであり、
それ以外は書式の無いプレーンテキストであるという意味です。


"Rich Text Format"  … 文字色やフォント名の含まれた書式付きテキスト
CF_UNICODE_TEXT   … Unicode(UTF-16) なプレーンテキスト
CF_LOCALE & CF_TEXT … Shift_JIS な プレーンテキスト
CF_OEMTEXT     … Shift_JIS な プレーンテキスト



> そのままWord上で貼り付けするのと何が違いますか?
同じですよ。

Unicode で貼り付けなら、CF_UNICODE_TEXT フォーマット、
そうでないなら、"Rich Text Format" が選択されると思います。

クリップボード内にどのような形式のデータが含まれているかは、
こういったツールで確認できます。
http://www.officedaytime.com/clipmm/


これを使うと、たとえば Excel で A1:B2 範囲を選択した時のコピーデータは
『メモ帳』に貼り付けられるような「テキストデータ」だけでなく、
『ペイント』などに貼り付けられるような「ビットマップデータ」も
作られている事を確認できます。


ちなみに今回初回した URL では、
 サン
という日本語を VB2010 からコピーした時に、
 \uinput2\u12469 ?T\uinput2\u12531 ?
という形式の RTF が生成され、それを Word が解釈できずに
破損してしまうのだと書かれているのですが、手元の環境では
元のソースファイルのコードページ指定が UTF-8 でも Shift_JIS でも
 \uc1\u12469?\uc1\u12531?
という RTF が生成されており、文字化けには至っていません。

どういうときに \uinput2 が生成されるのかは不明です。


なお、リッチテキスト フォーマットの仕様書(ver1.9.1)を確認したところ、
\ucN や \uN の RTF コードは定義されていましたが、
\uinput2 の定義は見当たりませんでした。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -