HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0224
たたか文字化け 「−」が 「?」に自然に変換されるんですけど?8解決


たたか

リンク

2012/2/24(Fri) 19:00:15|NO.45038

先日からCSVのデータ処理をしているんですが、データの中に
文字化け 「−」があるんですけどハイフンの1種
 これが「?」にいつの間にか?変換されているんですが

これは何なのか? 教えて下さい?
参考までに、
PDFのデータをコピーして テキストエディターに貼り付けるだけでも自動的に変換されているようです



この記事に返信する


たたか

リンク

2012/2/24(Fri) 19:11:35|NO.45039

ちなみにテキストエディターは初期文字コードがShift-JISです
terapad使っているんですけど、ちょこっと文字コードの部分さわってみたけど変化ないみたいです



とおりすがり

リンク

2012/2/24(Fri) 21:11:25|NO.45042

自分も似たような事を体験した事があります。
私の場合はコピーした文字列の中の半角スペースが ? に変換されていました。
コピーしたテキストの中に Unicode 形式の文字が含まれているとそのように表示される事が
あるようです。

対策方法は私は分からないので詳しい方にお願いするとして、とりあえず
文字列に Unicode が含まれているかどうか簡単に確認する方法があります。

問題の文字列をメモ帳にコピペして、「名前をつけて保存」を選択してみてください。
保存ダイアログが出たら、文字コードが「ANSI」になっている事を確認して、
適当な名前を付けて「OK」を押します。
もしコピーした文字列にUnicodeが含まれていれば、
「文字コードをUnicodeに変更するように」との警告ダイアログが表示されます。



Cookies

リンク

2012/2/25(Sat) 10:03:36|NO.45046

原因はここが参考に。
http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+200807/08070011.txt
クリップボードには種類があり、画像データとテキストデータは別になってます。
wordからwordへコピーしても、wordからnotepadにコピーしてもうまく動くのはこのためです。
で、テキストデータにも二種類(以上?)あって、CF_TEXTとCF_UNICODETEXTってのがあるらしい。
terapadはCF_TEXTを取得し、notepadはCF_UNICODEを取得しているんでしょう。

「−」はunicodeですが、「‐」「-」はunicodeじゃないです。(みため微妙に違う。)
変えられるんなら置換したほうが楽かと。



たたか

リンク

2012/2/26(Sun) 08:53:39|NO.45057

返事ありがとうございます。
とおりすがりさんのご指摘とおり 文字列にUnicodeが含まれています。
wpokeで変換することにしましたが
下のプログラムではデータの後半は消えているようです
wpokeの使い方がわかりません、
この機会に覚えたいので、基礎ですが教えて下さい。
i2=0
repeat
i3 = instr(simei_juusho_in,i2,"−");これがUnicode?
if i3=-1:break
wpoke simei_juusho_in,i3,0045;$0045でもだめ "−"のつもり
dialog simei_juusho_in
i2= i3+2
loop
参考までに
もとはPDF画面をコピーしてデータ取得しています



check

リンク

2012/2/26(Sun) 09:31:18|NO.45058

wpokeじゃなくてcnvwtosじゃね。



たたか

リンク

2012/2/26(Sun) 16:35:23|NO.45066

instr(simei_juusho_in,i2,"−");の部分がhspエディター保存して再読込すると
instr(simei_juusho_in,i2,"?");になってました。

またwpoke使わずに文字列操作しようとしたけど、何か変な動きしてる
(説明省略ですみません)



check

リンク

2012/2/26(Sun) 17:19:34|NO.45069

ああ、wpokeで操作ってそういうことがしたかったのかと、今一人で納得。

エディタ側が対応していない文字は保存されるときに?に変換されるんじゃなかったか。



たたか

リンク

2012/2/27(Mon) 15:34:46|NO.45083

これで文字列変換できました、おさがわせしました。
みなさま、ありがとうございました

i3=0
txtData = simei_juusho_in
repeat
await 1
i3 = instr(txtData,0,"−")
if ( i3 == -1 ) : break
txtData = strmid(txtData,0,i3)+"■"+strmid(txtData,i3+strlen("−"),strlen(txtData)-i3-strlen("−"))
dialog txtData
loop



ONION software Copyright 1997-2023(c) All rights reserved.