打开VS2008的MSDN: A.用索引的方式输入“String 类 ”,内容如下: String 类 表示文本,即一系列 Unicode 字符。 命名空间: System
程序集: mscorlib(在 mscorlib.dll 中) 备注
字符串中的每个 Unicode 字符都是由 Unicode 标量值定义的,Unicode 标量值也称为 Unicode 码位或者 Unicode 字符的序号(数字)值。每个码位都是使用 UTF-16 编码进行编码的,编码的每个元素的数值都用一个 Char 对象表示。 一个 Char 对象通常表示一个码位,即:Char 的数值等于该码位。但是,一个码位可能需要多个编码元素。例如,Unicode 辅助码位(代理项对)使用两个 C
B.用索引的方式输入“String 数据类型”,内容如下: String 数据类型 (Visual Basic)
请参见 发送反馈意见 存储 16 位(2 字节)无符号码位的序列,值的范围从 0 到 65535。每个“码位”(或字符代码)表示单个 Unicode 字符。一个字符串可包含从 0 到将近 20 亿 (2 ^ 31) 个 Unicode 字符。 Unicode 字符:
Unicode 的前 128 个码位(0 到 127)对应于标准美国键盘上的字母和符号。这前 128 个码位与 ASCII 字符集中定义的码位相同。随后的 128 个码位(128 到 255)表示特殊字符,如拉丁字母、重音符号、货币符号以及分数。Unicode 使用其余码位 (256-65535) 表示各种符号。其中包括世界上各种文字的字符、音调符号以及数学和技术符号。
程序集: mscorlib(在 mscorlib.dll 中) 备注
字符串中的每个 Unicode 字符都是由 Unicode 标量值定义的,Unicode 标量值也称为 Unicode 码位或者 Unicode 字符的序号(数字)值。每个码位都是使用 UTF-16 编码进行编码的,编码的每个元素的数值都用一个 Char 对象表示。 一个 Char 对象通常表示一个码位,即:Char 的数值等于该码位。但是,一个码位可能需要多个编码元素。例如,Unicode 辅助码位(代理项对)使用两个 C
B.用索引的方式输入“String 数据类型”,内容如下: String 数据类型 (Visual Basic)
请参见 发送反馈意见 存储 16 位(2 字节)无符号码位的序列,值的范围从 0 到 65535。每个“码位”(或字符代码)表示单个 Unicode 字符。一个字符串可包含从 0 到将近 20 亿 (2 ^ 31) 个 Unicode 字符。 Unicode 字符:
Unicode 的前 128 个码位(0 到 127)对应于标准美国键盘上的字母和符号。这前 128 个码位与 ASCII 字符集中定义的码位相同。随后的 128 个码位(128 到 255)表示特殊字符,如拉丁字母、重音符号、货币符号以及分数。Unicode 使用其余码位 (256-65535) 表示各种符号。其中包括世界上各种文字的字符、音调符号以及数学和技术符号。
解决方案 »
- 窗体编程:我遇到了一个奇怪的问题
- 数据文件读入数组问题
- 兄弟们,我也想把自己公司网站设置成黑白的悼念同胞!请大家帮忙怎么实现阿!
- 像win开始菜单
- 怎么样把dataset中的datatable 添加另一个dataset中?????
- 怎样按F1就调用我已经编写好的CHM帮助文件,用c#实现
- 求一小算法,一经解决,利马揭帖
- 如何给datagrid中的textbox赋数据库中得值?
- 请问com+事务与System.EnterpriseServices.ContextUtil.SetComplete()的关系?Help!
- c#串口读取数据,处理数据及发送数据问题
- ExecuteReader()绑定控件后NextResult()的问题.
- inno setup安装包问题
多数 Unicode 字符可由一个 Char 对象表示,但编码为基字符、代理项对和/或组合字符序列的字符由多个 Char 对象表示。因此,String 对象中的 Char 结构不一定与单个 Unicode 字符等效。
“每个“码位”(或字符代码)表示单个 Unicode 字符。”=>每個Unicode字符用1個碼位
這兩句話合起來,就是“每個Unicode字符用2Byte”我覺得(Visual Basic)段更像是描述以前要區分GB,Big5編碼的那種Unicode,而不像是在描述UTF-16
存储 16 位(2 字节)无符号码位的序列纠正一下,不是这句...是下句...每个“码位”(或字符代码)表示单个 Unicode 字符
请参见 发送反馈意见
存储16位(2字节)无符号码位的序列,值的范围从 0 到 65535。每个“码位”(或字符代码)表示单个 Unicode 字符。把這2句壓縮一下,變成:String存储16位(2字节)无符号码位的序列。每个“码位”(或字符代码)表示单个 Unicode 字符。這里的“码位”究竟是理解成“16位(2字节)无符号”的那種,還是理解成“一个或多个16位值的序列”?按照上下文理解,自然是前者,如果讓我來描述,可能會改成下面的:存储16位(2字节)或者32位(4字節)无符号码位的序列,大部分文字的范围从0到65535,少量文字的值大于65535。每个“码位”(或字符代码)表示单个 Unicode 字符。或者:
VB的碼位是一个或多个16位值,每个“码位”(或字符代码)表示单个 Unicode 字符。是不是就沒歧義了?這才容易讓人聯想到UTF-16
注意usually和might这两个词,后面也给出的特例...这就是我前面忽略了的“一个 Char 对象通常表示一个码位,即:Char 的数值等于该码位。但是,一个码位可能需要多个编码元素。”...其实早点应该让你注意这一句...就是说Char是UTF-16编码绝不意味着一个Char可以表示所有UTF-16字符,也就是说Char是“16位(2字节)无符号码”并不表示UTF-16是“16位(2字节)无符号码”...所以才会有“a Unicode supplementary code point (a surrogate pair) is encoded with two Char objects”和“a Char structure in a String object is not necessarily equivalent to a single Unicode character”...另外还遗漏了一句,你看看就理解了...
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsFormsApplication32
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); Char C1 = '1'; // 一个Unicode字符
Char C2 = '中'; // 还是一个Unicode字符 String S = C1.ToString() + C2.ToString();
// 第一次输出 1
// 第二次输出 2
foreach (Char C in S)
MessageBox.Show(C.ToString ());
String S1 = S.Substring(0,1); // 1
String S2 = S.Substring(1,1); // 中
}
}
}
// 第二次输出 中
foreach (Char C in S)
MessageBox.Show(C.ToString ());
引用 22 楼 lwl529378175 的回复:
是你的翻译软件没有翻译好这是MSDN官方的翻译,相对来讲已经很准确了...MSDN的中文翻译虽然不是完美的,有不少小bug,但总体上来说还是翻译的最好的...
[/Quote]
是这样的啊。