src/DotNetCommon.Core/LuanMaHelper.cs
(开头部分) 8KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using DotNetCommon.Extensions;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace DotNetCommon
{
/// <summary>
/// 中文乱码帮助类(GBK or UTF-8)<para></para>
/// 检测的原理: 将给定的字符串转成unicode数字,如果在常见汉字和符号内则不乱码,否则判定为乱码<para></para>
/// 当读取可能乱码的字符串时,需要先使用UTF-8读取,检查读取的结果有乱码的时候再用GBK读取,如果首先用GBK读取,那么不太能检查的出来。<para></para>
/// </summary>
public class LuanMaHelper
{
private static bool _isInitGBK = false;
/// <summary>
/// 初始化GBK编码支持
/// </summary>
public static void InitGBK()
{
if (!_isInitGBK)
{
lock (typeof(LuanMaHelper))
{
if (!_isInitGBK)
{
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
_isInitGBK = true;
}
}
}
}
static LuanMaHelper()
{
InitGBK();
}
private static Encoding unicode = Encoding.Unicode;
private static Encoding utf8 = Encoding.UTF8;
private static Lazy<Encoding> _gbk = new Lazy<Encoding>(() =>
{
InitGBK();
return Encoding.GetEncoding("GBK");
});
private static Encoding gbk => _gbk.Value;
/// <summary>
/// 是否是正常字符,不正常字符将判别为乱码<br />
/// emoji表情判为乱码<br />
/// <seealso href="https://blog.csdn.net/hherima/article/details/9045861"/>
/// </summary>
/// <returns></returns>
public static bool IsNormalChar(char c)
{
if (c == '\0') return true;
var bs = unicode.GetBytes(new[] { c });
if (bs.Length != 2)
后面还有 185 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
