どこに質問して良いのか判断しかねましたので、
今回の開発環境であるVBのカテゴリで質問させていただきます。
さて早速質問ですが、EUC->SJISについてです。
現在あるフリーの.DLLを使ってコード変換をしているのですが、
ある特定の場合に限り、自分の期待通りの結果を返してくれません。
例えば以下のような場合(説明のためアレンジして抜粋)です。
------------------------------------------------------------------
Dim Euc(6) As Byte
Dim Sjis() As Byte
Dim szSjis As Integer 'Sjis()のサイズ
Euc(0) = 13
Euc(1) = 10
Euc(2) = 13
Euc(3) = 0
Euc(4) = 46
Euc(5) = 0
szSjis = Euc2Sjis(Euc(), Sjis()) '今回使用しているDLL内の関数
------------------------------------------------------------------
この結果、変換後の値は以下のようになります。
szSjis → 3
Sjis(0) → 13
Sjis(1) → 10
Sjis(2) → 13
このようになり後半が無視されてしまっているような気がするのです。
私が期待している結果としては、46(&H2E)の"."が残ってほしいのですが…。
Euc(4)=0やEuc(6)=0がなにか悪さをしているのでしょうか?
日本語文字コードの知識に乏しいので、的外れな質問かもしれませんが、
このような分野にお詳しい方がいらっしゃいましたら、
どうかアドバイスよろしくお願いします。
No.1ベストアンサー
- 回答日時:
ソースを見てみるとEuc2Sjis()には変換データ長を通知する手段が無いようです。
C/C++言語では&H00を「文字列データの終了」とする文化があります。
その文化に準拠するDLLならこのような状況になるでしょう。
早速のお返事・アドバイスありがとうございます。
C/C++のことなんて、考えてもみませんでした。\0のことですね。
(実はこれでもC/C++を使っていたりします…)
もっと柔軟な思考で対処しなければいけませんね。
大変参考になりました。
ほんとうにありがとうございました。
No.2
- 回答日時:
通常コード変換の際にNullコードを終了コードとしますので、データ変換する際に、Euc(0)から順番にNullコードが出るまでループしてるんじゃないでしょうか?
文字コード変換という事ですが、データとしての&H00が必要なんでしょうか?
通常は、あまり使わないんですが。
アドバイスどうもありがとうございました。
データはTELNET接続先から帰ってきた生のデータです。
データとして&H00が必要というわけではなかったのですが、
日本語文字コードについてまったく知識がなかったため、
2バイトだったら&H00も意味があるコードなのかも?なんて思っておりました。
もうすこし、それぞれの意味や仕組みを意識していかないといけませんね。
このたびは本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- その他(プログラミング・Web制作) 文字コード及びフォントに関する次の記述を読み,適切なものをすべて選べ。 ASCIIとは,英数字だけを 4 2023/01/11 19:10
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- その他(プログラミング・Web制作) sedの動作 2 2022/10/10 13:38
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) IBM Notes9のメールをExcelVBAにて送信するコードについての質問です。 以下のコードを 3 2023/06/21 17:58
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
友人とのラインで 「~MBと書く...
-
セル内の文字列が日本語か英語...
-
「彡」って文字はなんという文...
-
VBAでbmp画像をASCIIデータとし...
-
英数字を含む文字列(0-9,A-Z)...
-
ふりがなをアルファベット化す...
-
VBでIMEの変換文字列を拾いたい
-
教えてください!!
-
C#で16進数からASCIIへの変換の...
-
CString ←→ BSTRの変換について
-
ExcelVBA実行後に時々落ちる
-
EBCDIC⇒SJIS変換の方法
-
ACCESSのVBAで2バイト文字を%x...
-
2バイト文字をJEFからSJISに変...
-
X86アセンブラで 16進数を10進...
-
URLのUTF-8からShift-JISへのデ...
-
COBOLによる全角・半角混...
-
1をA、2をB・・・に変換したい
-
ヘキサコードとバイナリについて
-
2進数を16進に変換する理由
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
「彡」って文字はなんという文...
-
std::stringからLPCWSTR型への変換
-
VS 2008(VB.NET)
-
ExcelVBA実行後に時々落ちる
-
ふりがなをアルファベット化す...
-
Excelマクロにて30分単位の計算...
-
英数字を含む文字列(0-9,A-Z)...
-
Symfowareでのデータ型変換につ...
-
JIS → S-JIS コード変換するには
-
sedで日本語の置換方法について
-
COBOLによる全角・半角混...
-
フォームのコントロールのバッ...
-
数字5桁文字コード?
-
バイナリデータ→ASCII 変換プ...
-
2バイト文字をJEFからSJISに変...
-
CString ←→ BSTRの変換について
-
VBScript ASC関数:文字エンコ...
-
入力した文字を全て自動で全角...
おすすめ情報