C#编码 .

C# Base64编码转换 最近在研究国内几款下载地址的转换原理,并用c#凑合着写了一个地址转换系统。其中就涉及到Base64编码转换的处理,关于Base64的原理,可以查看一下我转载的一篇文章:        奇妙的Base64编码             在网上看到了一篇牛人写的文章,用C#语言 阅读详情
 string str = "我是中国人";
            //Encoding encoding = Encoding.GetEncoding(str);
            Encoding unicode = Encoding.Unicode;
            Encoding utf8 = Encoding.UTF8;
            Encoding default1 = Encoding.Default;
            Encoding utf32 = Encoding.UTF32;
            byte[] byte1 = unicode.GetBytes(str);
            byte[] byte2 = utf8.GetBytes(str);
            byte[] byte3 = default1.GetBytes(str);
            byte[] byte4 = utf32.GetBytes(str);
            //byte[] byte5 = .GetBytes(str);
            Console.WriteLine("enUnicode:{0}", byte1.Length);
            Console.WriteLine("utf8:{0}", byte2.Length);
            Console.WriteLine("default{0}", byte3.Length);
            Console.WriteLine("utf32:{0}", byte4.Length);
            Console.WriteLine("utf32:{0}", Encoding.UTF8.GetString(byte2));
            string str2 = Encoding.UTF32.GetString(byte4);
            string str3 = Encoding.Unicode.GetString(byte1);
            Console.WriteLine(str3.ToString());
            Console.WriteLine(str);
            //HttpRequest.ContentEncoding 
            // Encoding encoding = Encoding.GetEncoding("gb2312");
            //IEnumerable<string[]> entries = File.ReadAllLines(fileInfo.UpperCasePath, Encoding.GetEncoding("Shift_jis"))

            string text = "%B3%C2%B8%A3%D0%CB";
            string keyword = HttpUtility.UrlDecode(text, Encoding.GetEncoding("GB2312"));
            string fds = HttpUtility.UrlEncode(keyword,Encoding.GetEncoding("GB2312"));

            byte[] ascii = Encoding.ASCII.GetBytes(s);

.NET中的String确实只有Unicode一种。所以编码格式的字节序列转换成String时最终都是以Unicode表示。转换成String后它以后的编码格式已经不重要或者说没有意义了。
System.Text.Encoding.Default是取系统的当前ANSI代码页的编码(MSDN上抄的),即当前系统的编码。(在我们的机子上一般都是 "gb2312 ")这就是我每次用Default读取文件流都正确,且必须用Default读取才正确的原因----其实用Encoding.GetEncoding( "GB2312 ")也一样。

详细介绍:
在每次进行byte[]--> String(other--> Unicode)和String--> byte[](Unicode--> other)时都会有编码转换。
比如通常的转换都有设置编码的地方,如StreamReader(string   path   [,   System.Text.Encoding   encoding]),Response.Charset,这就相当于你告诉系统byte[]是什么编码,这时候.NET用你指定的编码方式去解码,然后转换成Unicode编码方式的String.
也就是说,不管何时,我们所指定的编码都只是指byte[]。
即Encoding.UTF8.GetString(byte[]   buffer)是告诉系统buffer的编码是UTF8。
byte[]   buf   =   Encoding.UTF8.GetBytes(string   str)是告诉系统返回的buf编码方式是UTF8。

你可能告诉系统一个假的编码方式,或者你没有告诉系统并且byte[]的编码不是用的默认编码,那么系统解码仍然会用指定编码方式进行,在机器看来他仍然解码成功,然后转换成Unicode编码,因为机器只知道0,1字节序,他不知道解码出来的东西是否是混乱的,在他看来一切正常。
但我们去看,就会发现字符串成了一些莫名其妙的符号而没有任何意义,这就是所谓的乱码。
就好比: "you   yi   ge ",本来是拼音 "有一个 ",你却偏偏告诉别人这是英语,别人用英语去拼,就不知道是怎么回事了,就成了乱码,呵呵。
即:字节序是按指定编码方式编码,它有一个特定的编码方式,但它本身是中性的,不含有任何编码信息。

编码方式理论上是独立于语言的,但实际上需要语言去支持。如JAVA中有 "GBK "(gb2312扩展)编码,但.NET中没有。你用Encoding.GetEncoding( "GBK ")会抛异常。
http://topic.youkuaiyun.com/t/20050512/19/4002354.html

很好的一篇文章解释了Unicode和gb2312,UTF-8的区别于联系http://tech.ddvip.com/2008-11/122794544296212.html

也不错的编码文章:http://www.cnblogs.com/yasin/articles/1404064.html

http://www.cnblogs.com/namek/

转自:http://blog.youkuaiyun.com/helloguonan/article/details/7106582

C#实现jsescape编码 最近做项目要兼用linux环境下运行,url里面带有中文字符(必须是js的escape)连接,为了解决这个在后台引用了Microsoft.JScrip类库。使用Microsoft.JScript.GlobalObject.escape();在window下运行正常,但在linux下错误,提示:不能导入命名空间。网上找解决方法没有找到,如果有人知道的话给我说下,但是为了尽快解决,只能先写一段代码来暂 阅读详情

相关推荐

C#中的Unicode编码转换实战

Unicode字符编码标准是国际标准化组织(ISO)为了统一和简化字符编码,提供对世界上大多数语言的字符进行标准化、编码的一套方案。它为每个字符分配一个唯一的代码点,从而确保了计算机系统可以识别和处理来自不同语言和文化背景的文本数据。在C#中,Unicode字符是用char类型来定义的。char类型是一个16位的无符号整数,它能够表示从U+0000到U+FFFF范围内的任何一个Unicode码点。这种设计允许C#能够处理包括扩展字符集在内的各种Unicode字符。

weixin_42465332的博客 1617

C#  File.ReadAllLines方法中文编码出现乱码

C# File.ReadAllLines方法中文编码出现乱码 - 1、在使用File.ReadAllLines方法时,Encoding参数要与读取文件的编码格式相同。 - 2、可以使用NotePad++之类的软件打开文本文件,将编码格式转换为“UTF-8”格式。 - 3、使用:File.ReadAllLines(path, System.Text.Encoding.Default) 解决中...

dilyar0622的博客 8400

c#编码規約日文版c#编码規約日文版

c#编码規約日文版c#编码規約日文版c#编码規約日文版c#编码規約日文版

dotnet core(C#)下读取ANSI(GB2312)编码的文本

有一个txt文本文件,里面存了上千个文件的完整路径。获取到这些文件的文件名,就想着尝试下在dotnet core下编一个小程序来自动完成。 程序的思路还是很简单的:首先将txt文件中的文件名按行读取到string[]类型变量中;而后用LastIndexOf函数查找最后一个"\\"字符,用SubString截取文件名;最后把得到的文件名列表保存到文件中。 可以,在读取文件的时候遇到了问题:...

sunnyzls的专栏 8715

海康威视VS互联网大厂:薪资、福利、工作强度全方位对比

本文全面对比了海康威视与互联网大厂在薪资、福利和工作强度等方面的差异。海康威视提供稳定的薪资结构和较低的工作强度,适合追求专业深度的职场人;而互联网大厂则以高薪和快速成长吸引人才,但工作压力较大。文章还分析了职业发展路径和长期价值,帮助求职者做出明智选择。

weixin_29171129的博客 390

模型参考自适应控制(MRAC):让PID参数动态优化

本文深入解析模型参考自适应控制(MRAC)技术,它通过实时调整PID参数,使控制系统能自动适应系统特性变化和外部干扰。文章详细介绍了MRAC的工作原理、数学基础,并提供了用C语言实现的实战代码示例,帮助工程师解决传统PID控制在非线性、时变系统中参数整定繁琐的难题。

tequila的博客 903

Files.readAllLines()读取文件,无需担心字符集乱码问题

当读取一些特殊编码保存的文件时,读取时会出现乱码。 当存入一个编码比如 GBK,都会转化为二进制存储,而GBK存储汉字为二个字节,UTF-8为三个字节,取出的时候使用UTF-8会造成乱码。 使用Files.readAllLines(Path path, Charset cs) Files.readAllLines(Paths.get(""), Charset.forName("UTF-8")); 会将文件一行一行读取,并且变为List集合返回。 ...

jj89929665的博客 6077

基于matlab的心电信号预处理

这是前段时间做的一个课程设计,做的比较简单,没有考虑到太细,只是初步地达到了想要的效果。这次设计主要是对心电信号进行预处理,将其信号中包含的一些干扰滤除或者抑制掉。 一、心电信号 (1)心电信号的特性   人体心电信号是非常微弱的生理低频电信号,通常最大的幅值不超过5mV,信号频率在0.05~100Hz之间。心电信号是通过安装在人体皮肤表面的电极来拾取的。由于电极和皮肤组织之间会发生极化现象

i_weimoli的博客 6万+

基于 C# 的文本文件的编码识别

在 Windows 系统下,文本文件编码存在有无 BOM 的编码。BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode 编码标准中用于标识文件是采用哪种格式的编码。有文件 BOM 头的 Unicode 编码容易识别,无 BOM 文件头的要在文件中查找字节顺序来判断 Unicode 编码。 识别 UTF32、UTF16、UTF8 后,就是 ASCII 文件与简体中文编码识别。

中游鱼的博客 2870

不用买显示器!用USBMMID虚拟显示器软件在Win10上扩展4个屏幕(保姆级教程)

本文提供了一份详细的保姆级教程,指导用户如何在Windows 10系统上,无需购买额外硬件,通过USBMMID虚拟显示器软件扩展出多达4个虚拟屏幕。文章深入解析了虚拟显示器的核心原理,并基于微软IDD框架,手把手教学从软件获取、环境检查到安装配置的全过程,帮助开发者和多任务用户构建高效、免费的虚拟多屏工作站,实现生产力的飞跃。

backprop5master的博客 660

村田电感模型选型指南:.s2p和SPICE netlist在ADS中的表现差异

本文深度解析了村田电感在ADS仿真中.s2p与SPICE netlist两种模型的表现差异。通过对比模型本质、仿真设置及高低频段精度,揭示了.s2p文件基于实测插值而SPICE netlist基于等效电路外推的特性。文章提供了明确的选型策略,帮助工程师根据项目频段、仿真类型和精度需求,在射频与微波电路设计中做出最优模型选择。

k9l0m1的博客 452

C# 各类编码转换

Unicode编码转换(\u方式) /// <summary> /// 字符串转Unicode /// </summary> /// <param name="source">源字符串</param> /// <returns>Unicode编码后的字符串</returns> internal static string String2Unicode(string source) {

华少哥的博客 1671

《HiVT: Hierarchical Vector Transformer for Multi-Agent Motion Prediction》论文阅读之HiVT

目录摘要1.介绍2.相关工作3.方法3.1. 总体框架3.2 场景表示 3.3 分层向量Transformer3.3.1 局部编码器3.3.2 全局交互模块3.3.3 多模态未来解码器3.4 训练4.实验4.1 实验设置4.2 消融研究 4.3. 结果5.结论 准确预测周围交通参与者的未来运动对于自动驾驶车辆的安全至关重要。最近,矢量化方法由于能够捕捉交通场景中的复杂交互而在运动预测领域占据主导地位。然而,现有的方法忽略了问题的对称性并且受到昂贵的计算成本的影响,面临着在不牺牲预测性能的情况

Gavinmiaoc的博客 3340

JS编码解码对应C#编码解码

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z 1. JS: escap

星辉Johnson的博客 3227

STM32实战开发(133):基于STM32的智能GPS定位跟踪系统开发

本文详细介绍了如何基于STM32开发一个智能GPS定位跟踪系统。系统使用NEO-6M GPS模块获取实时定位数据,并通过SIM800L GPRS模块将定位信息上传到远程服务器。通过OLED屏幕实时显示位置数据,使用SD卡存储历史轨迹,并提供蜂鸣器报警功能。项目实现了GPS定位数据的获取、解析、存储和传输,为智能定位系统提供了完整的解决方案。

2201_76125393的博客 1643

详解Linux下使用vscode编译运行和调试C/C++

本教程将具体详解使用Visual Studio Code在Linux环境下使用C/C++方法。 GCC C++ 编译器 (g++) 和 GDB 调试器的方法。 GCC是GNU 编译器集合; GDB 是 GNU 调试器。 1.先决条件 安装Visual Studio Code. 安装C++拓展插件。点击在vscode界面最左侧的Extensions图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击进行安装。 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下命令

休的博客 6241

C#编码

1、C#实现Url编码和解码System.Web.HttpUtility.HtmlEncode(str); System.Web.HttpUtility.HtmlDecode(str); System.Web.HttpUtility.UrlEncode(str); System.Web.HttpUtility.UrlDecode(str); 编码时可以指定编码的 System.Web....

唛惊 2765

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

c# java base64编码解码_c# base64 编码解码

一. Base64的编码规则Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编 码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所 要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时...

weixin_39653761的博客 712

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

c#字符串编码问题

c#字符串编码问题 一、 ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对...

森大科技的博客 630

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C# 编码规则

一、命名1.用pascal规则来命名方法和类型.public class TextBox{     public void DataBind()       {     }}2.用camel规则来命名局部变量和方法的参数.string userName;public AddUser(string userId, byte[] password);3.所有

青蛙天地 2280

【转载】C#获取文件编码

【转载】C#获取文件编码 转载一段C#获取文件编码的代码,在此感谢代码提供者的无私奉献! /// summary /// 检测字符编码的类 /// seealso cref="System.IO.Stream"/ /// seealso cref="System.Uri"/ /// seea 【转载】C#获取文件编码 转载一段C#获取文件编码的代码,在此感谢代码提供者...

weixin_34302561的博客 763

C# 文本编码转换

1.  C#的编码转换默认由System.Text.Encoding进行操控转换. 引用为:   using System.Text; 2.  C# Encoding类自带编码有:UTF7/UTF8/UTF32/Unicode/ASCII, Encoding类有一个子类就是Default,此类会随操作环境变化而变化, 在Windows平台上编码为"GB18030" (GBK为此编码子...

Jelly的博客 3666

C#编码转换

C#编码转换主要使用了Encoding.Convert方法,它需要原编码字符串的字节数组作为参数,返回目标编码的字节数组。Encoding对象可以从字符串获取字节数组,又能够从字节数组还vb.net教程原字符串,因此可以将其 c#教程组合用来转码。 public static string EncodingConvert(Encoding src, Encoding dst, string text) { var bytes = src.GetBytes(text); bytes = Enc

chinaherolts2008的博客 3263
上一篇: .net 读取项目AssemblyInfo.cs属性值
下一篇: 谷歌搜索引擎
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值