您的位置:首页 > 编程语言 > C#

Head First C# 中文版 第九章 读写文件 page425

2009-05-17 09:42 246 查看
 
.NET自动把文本转化为Unicode编码

C#中用于存储文本的两种值类型--string和char--它们的数据在内存中以Unicode的形式保存。这些数据被写以字节的形式到文件的时候,每一个Unicode字符也就被写到文件了。新建一个项目,向窗体上拖拽三个按钮,我们来使用File.WriteAllBytes()和ReadAllBytes()方法来感受一下Unicode数据到底是怎么写到文件的。

 
①把一个普通的字符串写到文件并把它读取回来

让第一个按钮使用WriteAllText()方法来把字符串“Eureka!”写到一个叫做“eureka.txt”的文件。然后创建一个叫做eurekaBytes的字节数组,把文件读入该数组,然后把读取来的所有字节打印输出。



 
你将会看到这些字节输出为:69 117 114 101 107 97 33。现在把文件在你本章早先写的简单文本编辑器中打开。它会显示为“Eureka!”。

②让第二个按钮把字节按照十六进制数字输出

不仅是字符映射表可以显示十六进制。几乎是任何你见到的与编码数组有关的东西都可以以十六进制显示出来,所以知道如何使用十六进制是很有用的。把第二个按钮的事件处理方法写的和第一个按钮一样,只修改Console.Write()这一行,如下:

Console.Write(“{0:x2},b”);

这会告诉Write()方法把要打印的字符串之后的第一个参数作为两个字符的十六进制书显示出来。所以它会把这七个字节以十六进制而不是十进制写出来:45 75 72 65 6b 61 21。

③让第三个按钮输出希伯来字母

回到字符映射表并双击Shin字符。这将会把该字符添加到“复制字符”框中。然后同样的添加“Shalom”中的其他字母:Lamed(U+05DC),Vav(U+05D5),最后还有Mem(U+05DD)。然后添加第三个按钮的事件处理方法。它将会和第二个按钮的事件处理方法看起来很相似,只是一点不同。点击字符映射表中的复制按钮,然后用复制来的字符覆盖掉“Eureka!”,所以代码将会如下:

File.WriteAllText("eureka.txt","שׁוּלּמּ");

你注意到IDE把这些字符倒着粘贴进去的吗?这是因为IDE知道希伯来文是自右向左读的,所以,无论何时它遇到希伯来文,都会倒着显示。把光标指向字符中间,将会出现向左或者向右的箭头!这样如果你想要键入希伯来文的话就简单多了。现在运行代码,然后观察输出:ff fe e9 05 dc 05 d5 05 dd 05。前两个字符为“FF FE”,这就是Unicode表示将要以两个字节的形式表示一个字符串中的每个字母。然后显示的是希伯来字母--但是是倒过来的,所以U+05E9显示为e9 05。现在把文件在文本编辑器中打开--看起来是对的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# 文本编辑 ide 存储