【发布时间】:2010-09-11 03:26:51
【问题描述】:
如何将 ASCII 特殊字符(例如 ASCII 值 0x01)插入字符串?
我问是因为我正在使用以下内容:
str.Replace( "<TAG1>", Convert.ToChar(0x01).ToString() );
而且我觉得一定有比这更好的方法。有什么想法吗?
更新:
另外,如果我使用这种方法,我是否需要担心 unicode 和 ASCII 冲突?
【问题讨论】:
如何将 ASCII 特殊字符(例如 ASCII 值 0x01)插入字符串?
我问是因为我正在使用以下内容:
str.Replace( "<TAG1>", Convert.ToChar(0x01).ToString() );
而且我觉得一定有比这更好的方法。有什么想法吗?
更新:
另外,如果我使用这种方法,我是否需要担心 unicode 和 ASCII 冲突?
【问题讨论】:
我相信您可以使用\uXXXX 将指定的代码插入到您的字符串中。
ETA:我刚刚对其进行了测试,它可以工作。 :-)
using System;
class Uxxxx {
public static void Main() {
Console.WriteLine("\u20AC");
}
}
【讨论】:
另外,如果我使用这种方法,我是否需要担心 unicode 和 ASCII 冲突?
您的第一个问题将是您的标签与 ASCII 冲突。到达 TAG10 后,您将与 0x0A 发生冲突:换行。如果您确保您永远不会获得超过九个标签,那么您应该是安全的。当字节值介于 0 和 127 之间时,Unicode 编码(或者更确切地说:UTF8)与 ASCII 编码相同。它们仅在设置最高位时有所不同。
【讨论】:
我觉得一定有更好的 方式比这。有什么想法吗?
您似乎在尝试使用文本工具处理二进制块。例如,如果您想插入字节 0x01,则您不再处理文本,因为您不在乎该字节 可能 代表什么,而且看起来您不关心甚至关心您将输出哪种编码。
更好的方法是将您正在操作的东西视为二进制数据块,这样您就可以轻松地插入位和字节,而无需使用脆弱的解决方法并担心副作用。
【讨论】:
Convert.ToChar() 的工作原理,OP 的示例将按照您所说的进行操作,将参数视为Unicode 代码点编号。)