我不知道该行是以“\ n”还是“\ r”或“\ r \ n”结尾? 并且不要对文本进行编码,除非编码是utf-8,否则它可能不是bom。 是否有函数或lib可以执行此操作,或者只是告诉我终止行。
答案 0 :(得分:1)
使用wcslen获取utf8字符串的字节大小。
答案 1 :(得分:1)
您是否偶然使用fgets
,fread
,fputs
,fwrite
等来打开阅读文字的文件?如果是这样,实现将在读取时自动将特定于OS的行终止符(例如"\r\n"
)转换为'\n'
,并在写入时将'\n'
转换为特定于OS的行终止符。
有两个其他场景,其中一个是OP:
"\r\n"
从其他操作系统软件中移除,因此在他的(可能类似于Unix的)操作系统中打开文件进行读取将不再转换。我的建议是使用dos2unix
进行一次性转换,而不是使用可能永远不会再次运行的代码来膨胀您的代码。"\r\n"
。在这种情况下,您应该使用strstr
来查找确切的序列"\r\n"
。 UTF-8在设计时考虑到了与ASCII的兼容程度,因此您可以假设使用UTF-8的任何系统也将使用ASCII或某些类似的字符集。使用大于一个字节的序列的任何字符仅使用值0x80或更大来表示。由于'\n'
位于0x00-0x7F范围内,因此可以保证它只是一个字节,并且不会作为多字节字符的一部分存在。