惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Register - Security
The Register - Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
aimingoo的专栏
aimingoo的专栏
C
Check Point Blog
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
L
LangChain Blog
Vercel News
Vercel News
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security @ Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
人人都是产品经理
人人都是产品经理
H
Hacker News: Front Page
L
Lohrmann on Cybersecurity
T
Troy Hunt's Blog
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
T
Threatpost
AWS News Blog
AWS News Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Tor Project blog
Google Online Security Blog
Google Online Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
W
WeLiveSecurity
博客园 - 叶小钗
K
Kaspersky official blog
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
M
MIT News - Artificial intelligence
Hacker News - Newest:
Hacker News - Newest: "LLM"
Engineering at Meta
Engineering at Meta
有赞技术团队
有赞技术团队
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Secure Thoughts
小众软件
小众软件
D
Docker
爱范儿
爱范儿
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News and Events Feed by Topic
S
Schneier on Security
博客园 - 三生石上(FineUI控件)
D
DataBreaches.Net

博客园 - 沧海一声笑

阿里云服务器被挖矿minerd入侵的解决办法 Visor 隐藏应用之一 CSS3 生成器 Visro 应用的前端模板工具介绍 -JsRender 如何在HTML5 Canvas 里面显示 Font Awesome 图标 visor 发布 在一个老外微信PM的眼中,中国移动App UI那些事儿 7个步骤:让JavaScript变得更好 Websocket 协议解析 HTML5全局属性和事件 HTML5适合移动应用开发的几大特性 JQuery 应用-JQuery.groupTable.js(二) JQuery 应用-JQuery.groupTable.js - 沧海一声笑 - 博客园 DataGridView控件用法合集 浅析ASP.NET 3.5与ASP.NET 4.0主要差别 单点登录的实现思路(转) jquery 实现iframe 自适应高度 中国惠普前总裁孙振耀的毕生经验之谈 jquery之旅-jquery的Ajax SQL Server 2008 对 T-SQL 语言的增强
.Net 字符串编码和转换
沧海一声笑 · 2010-08-16 · via 博客园 - 沧海一声笑

一、先普及一下基本知识

编码指不同国家的语言在计算机中的一种存储和解释规范
ANSI与ASCII

       最初,Internet上只有一种字符集——ANSI的ASCII字符集(American Standard Code for Information Interchange, “美国信息交换标准码),它使用7 bits来表示一个字符,总共表示128个字符,后来IBM公司在此基础上进行了扩展,用8bit来表示一个字符,总共可以表示256个字符,充分利用了一个字节所能表达的最大信息
nANSI字符集:ASCII字符集,以及由此派生并兼容的字符集,如:GB2312,正式的名称为MBCS(Multi-Byte Chactacter System,多字节字符系统),通常也称为ANSI字符集。

UNICODE与UTF8,UTF16

         由于每种语言都制定了自己的字符集,导致最后存在的各种字符集实在太多,在国际交流中要经常转换字符集非常不便。因此,产生了Unicode字符集,它固定使用16 bits(两个字节)来表示一个字符,共可以表示65536个字符
        标准的Unicode称为UTF-16(UTF:UCS Transformation Format )。后来为了双字节的Unicode能够在现存的处理单字节的系统上正确传输,出现了UTF-8,使用类似MBCS的方式对Unicode进行编码。(Unicode字符集有多种编码形式)
例如“连通”两个字的Unicode标准编码UTF-16 (big endian)为:DE 8F 1A 90
                 而其UTF-8编码为:E8 BF 9E E9 80 9A

        当一个软件打开一个文本时,它要做的第一件事是决定这个文本究竟是使用哪种字符集的哪种编码保存的。软件一般采用三种方式来决定文本的字符集和编码:
检测文件头标识,提示用户选择,根据一定的规则猜测
最标准的途径是检测文本最开头的几个字节,开头字节 Charset/encoding,

二、.Net 中字符串编码的转换

例如:转换成UTF8

.NET 中默认字符串是Unicode

  byte[] sourcebytes = System.Text.Encoding.Default.GetBytes(sUnicode);

  byte[] targetbytes=System.Text.Encoding.Convert(Encoding.Unicode, Encoding.UTF8, tmpbytes);
  string UTF8string = System.Text.Encoding.UTF8.GetString(targetbytes);

文本文件的编码问题

读文件

StreamReader sr = new StreamReader(filename) 

StreamReader会检查字节码标记,确定编码方法

如果指定UTF8编码方法

StreamReader sr = new StreamReader(filename, 

 Encoding.UTF8); 

写文件

using(StreamWriter sw = new StreamWriter(filename))

{

      sw.Write(buffer);
      sw.Close();

}
上面的代码使用了UTF8编码方法,.NET把这种编码方法设置为默认的编码方法