Convert.ToBase64String(Byte[])和Encoding.UTF8.GetString(Byte[])的区别

Encoding.UTF8.GetString是针对使用utf8编码得到的字符串对应的byte[]使用,可以还原我们能看懂的字符串
Convert.ToBase64String是对任意byte[]都可使用,得到的是用字符串表示的byte[]信息 内容类似"Jwl9Kh+lPfmSPio//UpvbA=="

Base64有个优点,就是可以用文本格式传输,base64绝对不存在任何不可读的字符,也不存在关键字冲突字符,不需要转义。
缺点:Base64比起它的原始文本增大约30%。

二者都是将 byte[] 转换成字符串

一个区别在于 Convert.ToBase64String 使用 base 64 数字编码,所以它生成的全部是ASCII 字符。
而 Encoding.GetString 就是转换成我们平常所认识的字符串。

一些加密方法返回 byte[],此时我们要转换成字符串用哪个呢?
利用 Encoding.GetString 转换,可能得到很多方块或问号,这是由于某些整数序列无法对应于我们现实生活中的文字的原因,只能用方块或问号来代替。
所以我们一般还是用 Convert.ToBase64String 来进行。

那么从另一方面,字符串转换成 byte[] 用哪个呢?是不是一定要用 FromBase64String 呢?
不是的,我们普通的文字并不是 base 64 编码的,不能使用 FromBase64String 转换成 byte[],比如:

FromBase64String("MrZivChu的博客") 就会出错,因为“MrZivChu的博客”并不是 base 64 编码的。

对加密方法返回的byte[],用Convert.ToBase64String

对普通的文字操作,用Encoding.UTF8.GetBytes()

不过一个地方用Convert.ToBase64String来操作byte[]获得string,而另一个地方要用相同的byte[],

最好对应用
Convert.FromBase64String(string);

时间: 2024-10-16 03:14:04

Convert.ToBase64String(Byte[])和Encoding.UTF8.GetString(Byte[])的区别的相关文章

Encoding encoding = Encoding.GetEncoding("gb2312"); 与byte[] ping = Encoding.UTF8.GetBytes(inputString);区别

Encoding encoding = Encoding.GetEncoding("gb2312"); 与byte[] ping = Encoding.UTF8.GetBytes(inputString);区别 public static string SubString(string inputString, int length)        {            byte[] ping = Encoding.UTF8.GetBytes(inputString);      

Base64编码问题( Convert.ToBase64String)问题

由于网页传递参数时,会将加号编码成空格,但是在解码时却不会解码空格 // base64编码byte[] b = System.Text.Encoding.UTF8.GetBytes(jsons);string base64jsons = Convert.ToBase64String(b);base64jsons = base64jsons.Replace("+", "%2B"); // 解码 byte[] temp = model != null ? Convert

invalid byte sequence for encoding "UTF8": 0xe99d2c

Query failed: ERROR:  invalid byte sequence for encoding "UTF8": 0xe99d2c 原因是客户端字符集和插入内容的字符集不匹配.PostgreSQL默认不做字符集转换,如果数据库是UTF8的字符集,一般终端的中文字符集会设置为GBK(可以看LANG环境变量确认),所以这个编码不经转换的存入数据库中,而数据库是UTF8的,PostgreSQL发现不是UTF8编码,就报上面的错. 要想打开自动字符集转换功能,必须告诉 pg 客

PostgreSQL copy 时提示:ERROR: invalid byte sequence for encoding "UTF8": 0xb3

测试时使用三种文件格式: ISO-8859 Netpbm PBM image ASCII if [ $(file $filename|grep -c "ISO-8859") -gt 0 ]then echo "ISO-8859" psql -c "copy $schemaname.$tbname from '$dirname/$filename' with(format 'csv', delimiter ', encoding 'ISO-8859-1')&

com.fasterxml.jackson.core.JsonParseException: Invalid UTF-8 middle byte 0xc9

当json字符串中含有中文时,使用jackson解析报出如下错误: om.fasterxml.jackson.core.JsonParseException: Invalid UTF-8 middle byte 0xc9 at [Source: [[email protected]; line: 1, column: 12] at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1369) at com.

svn: Can't convert string from native encoding to 'UTF-8':

在bash的shell下,输入如下命令: #export LC_CTYPE=en_US.UTF-8 #!/bin/sh export LC_CTYPE=en_US.UTF-8 svn up /home/wwwroot/zj/erp --username "tcy" --password "zj004" http://blog.csdn.net/dazhi_100/article/details/17148987 svn: Can't convert string f

C# Encoding.Unicode.GetBytes / Encoding.Unicode.GetString 函数假想研究

我们很多人都知道Encoding.Unicode这个东东,它是用于获取字符串的Unicode字节流包括把Unicode字节流转换成.NET上的一个通用字符串String,但是有很多人却不知道它内部是如何实现的,当年我是通过MultiByteToWideChar 与WideCharToMultiByte实现的,但是我并不知道内部的实现方式. 首先我们需要理解Unicode字符串在内存中是怎么存储的,Unicode规定一个字符占用两个字节与wchar_t的长度一致 我为什要提这个是因为若你不知道有有

java 乱码问题-Dfile.encoding=UTF-8

http://blog.csdn.net/telnetor/article/details/5555361 问题描述:程序涉及到国际化问题,httpclient抓回来的数据乱七八糟的乱码,在转了几次编码之后在Myeclipse下可以获取正常编码的源码(准确的说是能显示一大部分,少部分内容依然乱码),但是将程序移植到eclipse下先前的程序就出现了乱码(移植工作曾经尝试过以下几种形式:1,程序从myeclipse中导出,然后再从Eclipse中导入:2,将Eclipse工作空间切换到myecli

go语言:多个[]byte数组合并成一个[]byte

场景:在开发中,要将多个[]byte数组合并成一个[]byte,初步实现思路如下: 1.获取多个[]byte长度 2.构造一个二维码数组 3.循环将[]byte拷贝到二维数组中 package gstore import ( "bytes" ) //BytesCombine 多个[]byte数组合并成一个[]byte func BytesCombine(pBytes ...[]byte) []byte { len := len(pBytes) s := make([][]byte, l