使用 Unicode 编码
面向公共语言执行库的应用程序使用编码将字符表示形式从本机字符方案(Unicode)映射为其它方案。
应用程序使用解码将字符从非本机方案(非 Unicode)映射为本机方案。
System.Text 命名空间提供了使您可以对字符进行编码和解码的类。System.Text 编码支持包含下面编码:
- Unicode UTF-32 编码
-
Unicode UTF-32 编码将 Unicode 字符表示为 32 位整数序列。您能够使用 UTF32Encoding 类在字符和 UTF-32 编码之间相互转换。
- Unicode UTF-16 编码
-
Unicode UTF-16 编码将 Unicode 字符表示为 16 位整数序列。您能够使用 UnicodeEncoding 类在字符和 UTF-16 编码之间相互转换。
- Unicode UTF-8 编码
-
Unicode UTF-8 编码将 Unicode 字符表示为 8 位字节序列。您能够使用 UTF8Encoding 类在字符和 UTF-8 编码之间相互转换。
- Unicode UTF-7 编码
-
Unicode UTF-7 编码将 Unicode 字符表示为 7 位字节 ASCII 字符的序列。
非 ASCII Unicode 字符由 ASCII 字符的转义序列表示。
UTF-7 编码是为支持某些须要 UTF-7 编码的协议而存在的,这些协议一般是电子邮件或新闻组协议。可是,UTF-7 并不是特别安全或可靠。在某些情况下,更改一个位可能会全然改变对整个 UTF-7 字符串的解释。在其它情况下,差点儿全然不同的 UTF-7 字符串能够对同样的文本进行编码。此外,对于包括非 ASCII 字符的序列,UTF-7 的空间利用效率比 UTF-8 低非常多,并且编码/解码的速度较慢。
因此。假设有其它选择,通常不应使用 UTF-7:UTF-8 通常应优先于 UTF-7。
能够使用 UTF7Encoding 类在字符和 UTF-7 编码之间相互转换。
- ASCII 编码
-
ASCII 编码将拉丁字母编码为单个 7 位 ASCII 字符。因为此编码仅支持从 U+0000 到 U+007F 的值,因此大多数情况下,对于国际化应用程序来说,它是不够的。您能够使用 ASCIIEncoding 类在字符和
ASCII 编码之间相互转换。有关在代码中使用 ASCIIEncoding 类的演示样例,请參见为基类型编码。
- ANSI/ISO 编码
-
System.Text.Encoding 类对范围较广的 ANSI/ISO 编码提供支持。
使用 Encoding 类
您能够使用 Encoding.GetEncoding 方法为指定的编码返回编码对象。
能够使用 Encoding.GetBytes 方法以指定的编码将
Unicode 字符串转换为它的字节表示形式。
以下的代码演示样例使用 Encoding.GetEncoding 方法为指定的代码页创建目标编码对象。针对目标编码对象调用 Encoding.GetBytes 方法。可在目标编码中将 Unicode 字符串转换为它的字节表示形式。字符串的字节表示形式随即以指定的代码页显示出来。
using System;
using System.IO;
using System.Globalization;
using System.Text; public class Encoding_UnicodeToCP
{
public static void Main()
{
// Converts ASCII characters to bytes.
// Displays the string's byte representation in the
// specified code page.
// Code page 1252 represents Latin characters.
PrintCPBytes("Hello, World!",1252);
// Code page 932 represents Japanese characters.
PrintCPBytes("Hello, World!",932); // Converts Japanese characters to bytes.
PrintCPBytes("\u307b,\u308b,\u305a,\u3042,\u306d",1252);
PrintCPBytes("\u307b,\u308b,\u305a,\u3042,\u306d",932);
} public static void PrintCPBytes(string str, int codePage)
{
Encoding targetEncoding;
byte[] encodedChars; // Gets the encoding for the specified code page.
targetEncoding = Encoding.GetEncoding(codePage); // Gets the byte representation of the specified string.
encodedChars = targetEncoding.GetBytes(str); // Prints the bytes.
Console.WriteLine
("Byte representation of '{0}' in Code Page '{1}':", str,
codePage);
for (int i = 0; i < encodedChars.Length; i++)
Console.WriteLine("Byte {0}: {1}", i, encodedChars[i]);
}
}
注意 |
|---|
|
假设您在控制台应用程序中执行此代码。则指定的 Unicode 文本元素可能会显示不对,由于控制台环境中对 Unicode 字符的支持会因所执行的 Windows 操作系统的版本号而异。 |
在 ASP.NET 应用程序中能够使用这些方法来确定用于响应字符的编码。将 HttpResponse.ContentEncoding 属性的值设置为由适当的方法返回的值。以下的代码演示样例阐释了怎样设置 HttpResponse.ContentEncoding。
// Explicitly sets the encoding to UTF-8.
Response.ContentEncoding = Encoding.UTF8; // Sets ContentEncoding using the name of an encoding.
Response.ContentEncoding = Encoding.GetEncoding(name); // Sets ContentEncoding using a code page number.
Response.ContentEncoding = Encoding.GetEncoding(codepageNumber);
对于大多数 ASP.NET 应用程序,应使 HttpResponse.ContentEncoding 属性与 HttpRequest.ContentEncoding 属性相匹配,以便在编码中显示client期望的文本。
有关在 ASP.NET 中使用编码的很多其它信息,请參见常见任务高速入门中的“多种编码演示样例”和 ASP.NET
高速入门中的“设置区域性和编码演示样例”。
使用 Unicode 编码的更多相关文章
- SQL Server 中怎么查看一个字母的ascii编码或者Unicode编码
参考文章:微信公众号文章 在sql中怎么查看一个字符的ascii编码,so easy !! select ASCII('a') SELECT CHAR(97) charNum SELECT UNICO ...
- JS操作Unicode编码的emoji表情显示在页面
前言:项目中用到了emoji表情,后端传递数据时直接是以Unicode形式,在页面总是无法展示,找尽各种方法总算是试出了一种,虽然达到效果但是并不是特别理解其中的原理并且无比笨拙,贴在这用作笔记,如果 ...
- [转]程序员趣味读物:谈谈Unicode编码
from : http://pcedu.pconline.com.cn/empolder/gj/other/0505/616631_all.html#content_page_1 这是一篇程序员写给程 ...
- java中文乱码解决之道(三)-----编码详情:伟大的创想---Unicode编码
随着计算机的发展.普及,世界各国为了适应本国的语言和字符都会自己设计一套自己的编码风格,正是由于这种乱,导致存在很多种编码方式,以至于同一个二进制数字可能会被解释成不同的符号.为了解决这种不兼容的问题 ...
- Unicode编码解码在线转换工具
// Unicode编码解码在线转换工具 Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式(The Unicode Standar ...
- .Net(c#)汉字和Unicode编码互相转换
{"Tilte": "\u535a\u5ba2\u56ed", "Href": "http://www.cnblogs.com&q ...
- 转载:谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
转载: 谈谈Unicode编码,简要解释UCS.UTF.BMP.BOM等名词 这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级 ...
- unicode编码与utf-8 区别
unicode编码与utf-8 区别 如果是为了跨平台兼容性,只需要知道,在 Windows 记事本的语境中: 所谓的「ANSI」指的是对应当前系统 locale 的遗留(legacy)编码.[1] ...
- 中文字符串转换为十六进制Unicode编码字符串
package my.unicode; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Uni ...
- C# Unicode编码
为了避免在浏览器中传输数据的时候出现中文乱码,我们可以将内容进行URL编码,当然也可以将内容进行UNICODE编码.将汉字进行UNICODE编码,如:"王"编码后就成了" ...
随机推荐
- DocDokuPLM 2.5安装
安装记录:(大部分是环境安装和配置) 未完待续.
- ClientAbortException:java.io.IOException解决方案
org.apache.catalina.connector Class ClientAbortException java.lang.Object java.lang.Throwable java.l ...
- js的弹性运动
弹性: 速度+=(目标点-当前值)/系数://系数大概可以选择6,7,8 速度*=摩擦系数://系数可以选择0.7,0.75,0.8 缓冲: 速度=(目标点-当前值)/系数: 速度取整:
- 条款40:明智而审慎地使用多重继承(use multiple inheritance judiciously)
NOTE: 1.多重继承比单一继承复杂.它可能导致新的歧义性,以及对virtual继承的需要. 2.virtual 继承会增加大小 速度 初始化(及赋值)复杂度等等成本.如果virtual base ...
- shell-code-exerciese-1
&&&&&&&&&&&&&&&&&&&& ...
- android sdk 下载
不知道是因为最近kaihui还是怎么的,打开android sdk官方网站特别的慢,想下载最新版本的platform几乎变成不可能完成的任务,不知道为什么Google不像Apache那样在各国设立镜像 ...
- visual studio 的生成、重新生成、清理功能的说明
生成 生成当前选中的项目,依赖的项目如果已经生成dll,则不生成,直接拷贝过来 重新生成 生成当前选中的项目,依赖的项目也会生成 清理 清除掉生成的dll和相关文件
- Python算法-二叉树深度优先遍历
二叉树 组成: 1.根节点 BinaryTree:root 2.每一个节点,都有左子节点和右子节点(可以为空) TreeNode:value.left.right 二叉树的遍历: 遍历二叉树:深度 ...
- 2.ruby基本语法,类的定义
1.在ruby中的定义class,ruby中定义类也是以关键字class开头 后面带着类名,类名以大写开头.一个类的结束以关键字end 结束.如: class Customer end 2.ruby类 ...
- 只操作git(cmd)就可以使用git将项目上传到github
代码改变世界 使用git将项目上传到github(最简单方法) 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装git工具, ...
注意