掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Unicodeテキストの1行読込み (ID:68611)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
久しぶりに投稿します。 OS:WinXP Pro SP2 VS2005, VC++ MFC プロジェクトのプロパティ[文字セット] ⇒ マルチ バイト文字セットを使用する Frameworkは使用しません。 タブ区切りのCSVを1行ずつ読込み分割して処理を行おうと思い、 ReadStringを使用しました。 簡単なプログラムと思っていたのですがCSVが「Unicode(UTF-16LE)、改行コードCRLF」 可変長で、ReadStringはSJIS前提という情報を見かけたのと1行分正確に読込まれないためfgetsに切替えました。 CSVの内容は以下のようなものです。 ああああ[TAB]いいいい[TAB]うううう[CRLF] 123ああ[TAB]4いい[TAB]5うう[CRLF] abcd[TAB]efg[TAB]hijklm[CRLF] ・ ・ (コード) CString strResult = ""; // 1行格納用 CString strBPath = "xxxx.csv"; int nLen; fopen_s(&fp, strBPath, "rb"); if(fp == NULL) return; while (1) { TCHAR buf[1000] = {0}; if (fgets(buf, sizeof(buf), fp) == NULL) break; strResult = buf; nLen = strResult.GetLength(); } (Unicode(UTF-16LE)、改行コードCRLF)CSV 1行目nLen:11 正解はBOM+で[30]でしょうか? (同じ内容のSJIS、改行コードCRLF)CSV 1行目nLen:28 となります。 1.「Unicode(UTF-16LE)、改行コードCRLF」の1行を読込む方法を教えてください。 2.読込み(ワイド文字列として?)後、手動でBOMを削除し、wcstombs、WideCharToMultiByte等 で変換する、でしょうか? 3.読込み後、手動で上位バイト、下位バイトの入替が必要ですか? 4.一発変換関数(たぶん、1行読込み成功後になるのでしょうが)とかご存知ありませんか? 以上、欲張りな質問になりましたが、よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.