使用 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 字符串转换为它的字节表示形式。字符串的字节表示形式随即以指定的代码页显示出来。

C#

VB

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

C#

VB

// 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 属性相匹配,以便在编码中显示客户端期望的文本。

有关在 ASP.NET 中使用编码的更多信息,请参见常见任务快速入门中的“多种编码示例”和 ASP.NET
快速入门
中的“设置区域性和编码示例”。

时间: 2024-10-14 20:24:13

使用 Unicode 编码的相关文章

解决 iOS NSDictionary 输出中文字符”乱码”(Unicode编码)问题

简单定义一个字典,输出结果: NSDictionary *dic = @{ @"我是中文字符": @"223333", @"aaa": @{ @"aaa": @"啦啦啦" } }; NSLog(@"%@", dic); 将会看到这样的"乱码",这种现象经常在调试服务端返回 JSON 结果的时候遇到: 2015-02-25 19:23:40.346 XXXX[13273

PHP输出json数据时,中文不进行unicode编码

今天在写和API接口时,将PHP数组转成json,但是有个规则是不能用unicode编码 试了几种方法: 若PHP是5.4以上的 可以直接使用JSON_UNESCAPED_UNICODE参数 json_encode('中文测试',JSON_UNESCAPED_UNICODE); 这种方法字符串可行,但是数组不可行(有待验证) 2.将数组中的字符串urlencode,然后将数组json_encode转成json,最后进行urldecode 注:urlencode()和urldecode()将中文字

常用中文字体 Unicode 编码

各大网站的字体选择 网站 字体 腾讯 font: 12px "宋体","Arial Narrow",HELVETICA; 淘宝 font: 12px/1.5 tahoma,arial,'Hiragino Sans GB',\5b8b\4f53,sans-serif; 蘑菇街 font: 12px/1.6 tahoma,arial,sans-serif; SegmentFault font-family: "Helvetica Neue",Helv

Java与编码问题串讲之二–如何理解java采用Unicode编码

Java开发者必须牢记:在Java中字符仅以一种形式存在,那就是Unicode(不选择任何特定的编码,直接使用他们在字符集中的编号,这是统一的唯一方法).由于java采用unicode编码,char 在java中占2个字节.2个字节(16位)来表示一个字符. 这里的Java中是指在JVM中.在内存中.在代码里声明的每一个char.String类型的变量中. 例如: 1 2 3 4 5 6 7 System.out.println(System.getProperty("file.encoding

Unicode编码的原型

Unicode编码定义了这个世界上几乎所有字符(就是你眼睛看到的长那个样子的符号)的数字表示 也就是说Unicode为每个字符发了一张身份证,这张身份证上有一串唯一的数字ID确定了这个字符 在这个纷乱世界上存在的唯一性.Unicode给这串数字ID起了个名字叫[码点](Code Point) 而很多人说的编码其实是想表达[Unicode转换格式](即UTF,Unicode Transformation Formats) 有没有觉得眼前一亮豁然开朗?没错 这就是我们看到的UTF-8/UTF-16/

Unicode 编码解码

1. Regex.Unescape(str);返回Unicode解码,非Unicode直接返回 /// <summary>      /// 2.转为Unicode编码      /// </summary>      /// <param name="str"></param>      /// <returns></returns>  public static  string ToUnicode(string

Unicode编码与中文的转换

1.1.  将unicode编码转换为中文 public String decodeUnicode(String src) { char[] in = src.toCharArray(); char aChar; char[] out = new char[src.length()]; int outLen = 0; int off = 0; int end = src.length(); while (off < end) { aChar = in[off++]; if (aChar == '

unicode 编码在线转换工具--javascript

unicode 编码在线转换工具--javascript 本人在网上搜索,看到有使用javascript做unicode编码转换的,感觉很好玩,所以拿来使用的. 这个功能有目前测试了两种: 1)unicode互相转换,例如\u4e2d\u56fd转换成字符,支持中文和英文: 2)URL编码的解析,例如众所周知的%20是表示空格,还有%24,%33,%44,%62等等: 我相信,只要你试试上面的字符进行解码,你就会知道他们之间关系,如何表示字符,数字,字母. 以上可以直接运行.下面给出相关的JS代

Native2asciiUtil 文本文件转UNICODE编码文件(支持UTF-8,Unicode,UTF-16BE,ANSI|ASCII,GBK)

package com.ctl.util; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * * @author Administrator * @Description \u5C06\u6587\u672C\u6587\u4EF6\u8F6C\

SQL Server 中怎么查看一个字母的ascii编码或者Unicode编码

参考文章:微信公众号文章 一直对sql中的left和right有误解,一直以为它是这样的. SELECT Mobile FROM dbo.T_User WHERE Id = 1 执行这样一句: SELECT LEFT(Mobile,2) leftNum FROM dbo.T_User WHERE Id = 1 SELECT RIGHT(Mobile,2) rightNum FROM dbo.T_User WHERE Id = 1 出现的结果是这样的: 而我心中这样认为: 我认为只出现第二个. 运