查询语句 select unhex(e7a7a6e6a5bc) ,输出 (秦楼),在C# 输出后变为(56em5qW8)
MySQL 中的 UNHEX 函数可以将十六进制字符串转换为二进制字符串。如果查询的字符串是中文的话,需要先使用 HEX 函数将其转换为十六进制字符串,再使用 UNHEX 函数将其转换回中文。
请注意,UNHEX 函数适用于存储二进制数据的字段上,并不适用于普通字符串字段上,如果要使用需要指定字符集为 binary, 请先按照这样的语句建立字段:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`binary_data` varbinary(255) DEFAULT NULL,
PRIMARY KEY (`id`)
);
这个例子里建立了一个名为 "test" 的表,里面有一个 "binary_data" 字段,用来存储二进制数据。
C语言中没有unhex这个函数,需要使用C语言提供的API来进行转换,如sscanf()函数。
望采纳!!!点击回答右侧采纳即可!!
unhex函数是将十六进制字符串转换为字符串,在mysql中使用该函数可以正确的将十六进制字符串(e7a7a6e6a5bc)转换为(秦楼)。
然而,在C#中输出后变成了base64字符串(56em5qW8)是因为在C#中对于中文字符进行了编码处理。该字符串为 UTF-8 编码。
如果你想在C#中正确输出该字符串,可以使用 C# 的 Encoding 类中的 FromBase64String 方法将其转换为普通字符串,再使用 Encoding 类的 GetString 方法将该字符串从 UTF-8 编码转换为所需的编码格式。
那你可以通过C# 中的FromBase64String()方法将base64字符串转成普通字符串。
我给你提供个FromBase64String()使用示例,你参考一下
若有帮助,还望采纳,点击回答右侧采纳即可。
static void Main(string[] args)
{
string s = "秦楼";
Console.WriteLine(s);
byte[] payload = Encoding.Default.GetBytes(s);
String payloadStr = Convert.ToBase64String(payload);
Console.WriteLine(payloadStr);
var bylst = Convert.FromBase64String(payloadStr);
var iss= System.Text.Encoding.Default.GetString(bylst);
Console.WriteLine(iss);
Console.Read();
}
unhex() 是 MySQL 中的一个函数,它可以将十六进制字符串转换为原始字节序列。在上面的查询语句中,unhex('e7a7a6e6a5bc') 将十六进制字符串转换为 UTF-8 编码的字节序列,这个字节序列对应了中文字符串“秦楼”。
然而,在 C# 中,可能使用了不同的编码或编码转换方式,导致原始字节序列变成了 base64 编码的字符串。在转换的时候需要注意使用的编码方式。
在 C# 中,可以使用 Encoding 类来将字节序列转换为字符串。在这个例子中,需要使用 UTF-8 编码。
这里给出一个示例代码,它将十六进制字符串转换为中文字符串:
using System;
using System.Text;
class HexToString
{
public static void Main()
{
// 16进制字符串
string hexString = "e7a7a6e6a5bc";
// 将十六进制字符串转换为字节数组
byte[] bytes = new byte[hexString.Length / 2];
for (int i = 0; i < bytes.Length; i++)
{
bytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
}
// 使用 UTF-8 编码将字节数组转换为字符串
string result = Encoding.UTF8.GetString(bytes);
Console.WriteLine("Original String : {0}",result);
}
}
可以输出结果:
Original String : 秦楼
注意如果获取的十六进制字符串是在 C# 中字符串变量,那么需要注意它的存储格式,因为这个字符串可能已经被转换成Unicode,在转换时需要注意使用的编码方式。
仅供参考,望采纳,谢谢。
你的C#后台代码如何编写的,截图看下可以给出更加准确的答案