使用 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编码,如:"王"编码后就成了" ...
随机推荐
- docker apache安装
文章来源: 1.添加镜像 # docker pull httpd2. 2.创建httpd文件 # mkdir /data/httpd2. 3.启动apache # docker run -it -p ...
- redis 内存管理与数据淘汰机制(转载)
原文地址:http://www.jianshu.com/p/2f14bc570563?from=jiantop.com 最大内存设置 默认情况下,在32位OS中,Redis最大使用3GB的内存,在64 ...
- js request学习
SP的内置对象在JSP页面中无须声明就可以直接使用,其内置对象常用的有Request,response,session,application,out,config,pageCOntext reque ...
- 深入浅出Oracle:DBA入门、进阶与诊断案例(读书笔记1)
一.数据库的启动和关闭 Oracle Server共有2部分组成:Instance和Database. Instance是指一组后台进程/线程和一块共享内存区域,而Database是指存储在磁盘上的一 ...
- Java单例模式简单实现
代码 public class Singleton { private static Singleton singleton;//创建一个单例对象 public static Singleton ge ...
- linux无人值守安装介绍(一)
一.术语解释 PXE(Pre-boot ExecutionEnvironment)是由Intel设计的协议,它可以使计算机通过网络而不是从本地硬盘.光驱等设备启动.现代的网卡,一般都内嵌支持PXE的R ...
- [BZOJ3054] Rainbow的信号(考虑位运算 + DP?)
传送门 BZOJ没数据范围... 其实数据范围是这样的.. 前20%可以直接n^3暴力枚举每个区间 前40%可以考虑每一位,因为所有数每一位都是独立的,而和的期望=期望的和,那么可以枚举每一位,再枚举 ...
- BZOJ 2190仪仗队【欧拉函数】
问题的唯一难点就是如何表示队长能看到的人数?如果建系,队长所在的点为(0,0)分析几组数据就一目了然了,如果队长能看到的点为(m,n),那么gcd(m,n)=1即m n 互质或者是(0,1),(1,0 ...
- ORACLE无法删除当前连接用户
今天在做Oracle数据库是遇到ORACLE无法删除当前连接用户 ,经查找可用如下方法解决 . 在Oracle中删除用户时提示:ORACLE无法删除当前连接用户 可以用以下语句 Sql代码 ...
- excel打乱各行的顺序,实现无序随机排列
由于公司做活动,经常会发些激活码过来,为了让激活码能够充分使用,经常要打乱激活码的顺序,百度了下,看了下网上的介绍,还不错,挺实用,记录下来. 具体方法如下: 1.将文本里的内容复制到Excel里的任 ...
注意