喫茶XRAYトップページ

[▲前のスレッド]

[3094] 文字コードの検出返信 削除
2010/2/16 (火) 16:07:12 Mr.XRAY
古い話題で申し訳ないのですが.

http://mrxray.on.coocan.jp/bbs/DelphiBBS/mrxray_delphifan_coffe.cgi?tree=s2908#2911

>結果
>(A群)  正常に「932」を返した本数                   = 10本
>(B群)  「0」を返した本数                           = 9本
>(C群)  文字コード'20127'(US-ASCII)を返した本数   = 5本
>(D群)  (B群)のスペース(空白部)を削除して、「可変長」にしたら「932」を返した本数  = 2本


0というのはどうもシステムのデフォルトらしいです(不確実)
サンプル「886_ChangeMojiCode-04」のDetectCodepage関数の戻値の暫定値を

begin
  Result := -1; //0を-1にする


でテストしてみたらどうなるかですね.
Mlangは不明な,判定不可の場合に,「デフォルトでいいんじゃない?」
というのかも知れません.

(C群)でUS-ASCIIを返すのは,やはり日本語が極端に少ないから,
のような気がします.
つまり,少し日本語が入っていてもMlangは「間違いだろう?」と
判定するとか...
(B群)との違いは,文字数が少ないので,そう判定し,文字数が少し多いと
これだけおおいのだから,間違いではなく,「デフォルト」と判定するのかも.


[3095] Re:文字コードの検出返信 削除
2010/2/16 (火) 16:13:29 Mr.XRAY
> 0というのはどうもシステムのデフォルトらしいです(不確実)

今Delphi2010で確認してみました.

     Enc := TEncoding.GetEncoding(0);
     Memo1.Lines.LoadFromStream(GetStream, Enc);

こんなコードです.
Shift-JISのテキストをGetStreamに格納して表示しました.
文字化けしません.


[3096] Re2:文字コードの検出返信 削除
2010/2/16 (火) 16:21:13 Mr.XRAY
すみません.今ログを読み返してみたら,

>何処かで一度UNICODEへ変換する必要が有ります。

という記述がありました.
これなら問題ないですね.
元の文字コードとは関係なしに,Unicodeへの変換は可能だと思います.
特にDelphi2009以降で変換を実行するのであれば,
TEncodintクラスが使用できますから,Mlangは使用しなくてすみます.


[3097] Re:文字コードの検出返信 削除
2010/2/16 (火) 19:45:55 Null
▼ Mr.XRAYさん

お世話になって居ります。.. 大変ご無沙汰です。


> 古い話題で申し訳ないのですが.
> http://mrxray.on.coocan.jp/bbs/DelphiBBS/mrxray_delphifan_coffe.cgi?tree=s2908#2911


> 0というのはどうもシステムのデフォルトらしいです(不確実)
> サンプル「886_ChangeMojiCode-04」のDetectCodepage関数の戻値の暫定値を
> begin
>   Result := -1; //0を-1にする
> でテストしてみたらどうなるかですね.


追加情報有難うございます。

早速、テストさせて頂きます。.... と言いたいのですが、
本日不覚にも、バレンタインデーに女房殿から頂戴した珍しい日本酒の
小瓶の詰め合わせを、試飲している間に.. (小瓶でも数をこなせば結構な量に)
思考能力を少しばかり無くしてしまいました。

明日、勤務先でしっかり確認させて頂きます。
此所だけの話ですが、勤務先へ出向けば結構自由な時間がとれるんです。

と、言うことで本日はこれにて「死んだふり」をします。
失礼しました。


[3098] Re2:文字コードの検出返信 削除
2010/2/16 (火) 20:29:19 Mr.XRAY
▼ Nullさん

> 早速、テストさせて頂きます。.... と言いたいのですが、

いえいえ,特にNullさんにというわけではないので.
この掲示板を読んでいる方々にも参考にということですので.
たった今UPしたサンプルプログラムの記事を書いていて,
ふと思ったものですから.

後思いついたのが,DetectInputCodepageの第1引数の値を
4(マルチバイト)にするかですね.
時間があったら後でテストしてみます.


[3099] Re3:文字コードの検出返信 削除
2010/2/17 (水) 07:54:21 Null
▼ Mr.XRAYさん

おはよう御座います。  昨晩は失礼しました。


> 0というのはどうもシステムのデフォルトらしいです(不確実)
> サンプル「886_ChangeMojiCode-04」のDetectCodepage関数の戻値の暫定値を
> begin
>   Result := -1; //0を-1にする
> でテストしてみたらどうなるかですね


確認しました。
(B群) は、全て'-1'が返って来ました。
ある意味、正常終了のデフォルトと言うことで良いのでしょうね?。
(たぶん!)

(C群) 前回と同じ'20127'  です。
これも(US-ASCII)で有りそれ以外のコードではないと言うことでしょうね。
.. 何か言っている意味がおかしいかな?..


> 後思いついたのが,DetectInputCodepageの第1引数の値を
> 4(マルチバイト)にするかですね.
> 時間があったら後でテストしてみます.


確認しました。
(B群) は、全て'932'が返って来ました。
(C群) 前回と同じ'20127'  です。

以上結果のご報告を....
失礼します。


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82