none
Unicode Text文件中的\r\n换行符问题 RRS feed

  • 问题

  • 遇到一个奇怪的问题,我从一个Excel 2010的表格中,把2列字符串合并到1列,如下面的形式:

     Column1 Column2 Column3 = Concatenate(C1,"\r\n",C2)

    abc4000  abc4000 是这的xyz加那的abc=4000 abc4000\r\nabc4000 是这的xyz加那的abc=4000 Row1

    然后我拷贝这样的几百个Row1,Row2,...Row 5xx. 打开一个notepad,粘贴到notepad里,存为abcnum.txt, unicode模式.

    然后我在MFC程序里,读入该abcnum.txt,每一行读入一个CString对象,例如,CString abcStr.

    我用断点查看,abcStr的内容确实是:abc4000\r\nabc4000 是这的xyz加那的abc=4000    

    然后我用一个CStatic 对象输出该字符串,如 CStatic m_TopMsg.

    m_TopMsg.SetWindowTextW(abcStr);

    结果显示的是:abc4000\r\nabc4000 是这的xyz加那的abc=4000   t

    为了测试,我尝试直接在程序里给abcStr赋值, 如: abdStr = _T("test test\r\nTEST TEST");

    但这样做,输出的结果是\r\n起作用了,输出:  test test

    TEST TEST

    求教,这是为什么呢

    2014年4月12日 0:44

答案

  • Excel是不认"\r\n"的,要换行的话使用Column3 = Concatenate(C1,CHAR(10),C2)

    如果使用\r\n,则Excel只是当成一般字符处理而已,并不会转义成换行符,所以你用程序读取时就只能显示出一般的字符,并没有换行的作用。

    • 已标记为答案 focusdoit 2014年4月12日 13:18
    2014年4月12日 6:46