從 Word 讀取文本到 CString 時,軟回車 (Shift+Enter) 會帶入特殊 Unicode 控制字元,顯示為小方框。需識別其編碼值並用 Replace 移除或轉換為硬回車。
CString 內容複製到 UltraEdit / Notepad++ / VS 記憶體視窗,查看十六進位碼。\v, 0x0B)CString txt = ...; // 從 Word 讀取
// 替換垂直製表符 (最常見)
txt.Replace(_T('\x0B'), _T('\r\n')); // 或 _T('\n')
// 替換行/段分隔符
txt.Replace(_T('\x2028'), _T('\r\n'));
txt.Replace(_T('\x2029'), _T('\r\n'));
// 通用:移除所有非列印字元 (保留 \r\n\t)
CString cleaned;
for (int i = 0; i < txt.GetLength(); ++i) {
TCHAR ch = txt[i];
if (ch >= 32 || ch == '\r' || ch == '\n' || ch == '\t')
cleaned += ch;
else
cleaned += _T(' '); // 或忽略
}
txt = cleaned;
// 若知道確切 Unicode 值
CString vt; vt.AppendChar(0x000B); // 垂直製表符
txt.Replace(vt, _T("\r\n"));
CString::Replace 區分大小寫,Unicode 字元直接匹配。MSHTML 或 OpenXML SDK 解析 Word,可在解析階段直接正規化換行。掌握 Unicode 控制字元識別與 CString 替換技巧,能徹底解決 Word 文本匯入髒字元問題。