使用 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编码,如:"王"编码后就成了" ...
随机推荐
- log4j日志输出到文件的配置
1.Maven的dependency 2.log4j.properties的配置 3.Junit的Test类 4.web.xml的配置(非必要) 5.spring的db.config的配置(非必要) ...
- centos7 parted 扩容
(系统:vmware上的centos7.4 ,使用工具:parted分区命令.) 最近发现磁盘不够用了,需要加点.## WARNING ! 下面是实验过程,不代表生产环境.若有重要数据请操作前备份. ...
- 【linux】 【网络】【转发】服务器版自定义安装无法有线上网问题
- Hive和Hbase整合
Hive只支持insert和delete操作,并不支持update操作,所以无法实施更新hive里的数据,而HBASE正好弥补了这一点,所以在某些场景下需要将hive和hbase整合起来一起使用. 整 ...
- java 比较String StringBuffer StringBuilder
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能 ...
- 【LeetCode】Game of Life(生命游戏)
这道题是LeetCode里的第289道题. 题目描述: 根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机. 给定一个包含 m × n 个格子的面板,每一个格 ...
- Educational Codeforces Round 26
Educational Codeforces Round 26 困到不行的场,等着中午显示器到了就可以美滋滋了 A. Text Volume time limit per test 1 second ...
- ActionProxy相关实现类
package com.opensymphony.xwork2; import com.opensymphony.xwork2.config.Configuration; import com.ope ...
- java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment问题解决
2018-09-29 17:45:16.905 ERROR [pool-1-thread-1]o.s.scheduling.support.TaskUtils$LoggingErrorHandler. ...
- 最近项目中公用的JS
var closeid = 1; var isneedpwd = 0; var editor1; var NoCheckUrl = 0;//适用于框架 不验证权限 !=0验证 function Erp ...
注意