SuperDesign/Source/开发辅助工具/Tools/FrmEncode.cs
鑫Intel c7b33920bd ### 2023-01-21更新
------
#### SuperDesign    V2.0.2301.2101
- *.[新增]新增API编辑器,自动保存和快速插入修改参数。
- *.[改进]使用新款高亮编辑器。
2023-01-21 23:28:09 +08:00

359 lines
11 KiB
C#

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.Xml;
using WeifenLuo.WinFormsUI.Docking;
namespace .Tools
{
public partial class FrmEncode : DockContent
{
public FrmEncode()
{
InitializeComponent();
CbbEncodingCode.SelectedIndex = 0;
}
RyWeb.QuickWeb web = new RyWeb.QuickWeb();
private void AutoCode()
{
string from_text = TxtFromCode.Text;
if (from_text == "") { TxtResultCode.Text = ""; return; }
#region
Encoding encoding = Encoding.UTF8;
switch (CbbEncodingCode.SelectedIndex)
{
case 0: encoding = Encoding.UTF8; break;
case 1: encoding = Encoding.GetEncoding("GBK"); break;
case 2: encoding = Encoding.GetEncoding("GB2312"); break;
case 3: encoding = Encoding.ASCII; break;
case 4: encoding = Encoding.Unicode; break;
case 5: encoding = Encoding.BigEndianUnicode; break;
case 6: encoding = Encoding.UTF7; break;
case 7: encoding = Encoding.UTF32; break;
}
#endregion
if (RbBase64Encode.Checked)
{
#region Base64加密
try
{
byte[] bytedata = encoding.GetBytes(from_text);
TxtResultCode.Text = Convert.ToBase64String(bytedata, 0, bytedata.Length);
}
catch
{
TxtResultCode.Text = "";
}
#endregion
}
else if (RbBase64Decode.Checked)
{
#region Base64解密
try
{
byte[] bytes = Convert.FromBase64String(from_text);
TxtResultCode.Text = encoding.GetString(bytes);
}
catch
{
TxtResultCode.Text = "";
}
#endregion
}
else if (RbURLEncode.Checked)
{
TxtResultCode.Text = web.UrlEncode(from_text, encoding);
}
else if (RbURLDecode.Checked)
{
TxtResultCode.Text = RyWeb.WebDecode.UrlDecode(from_text, encoding);
}
else if (RbUnicodeToChs.Checked)
{
#region Unicode转字符串
try
{
TxtResultCode.Text = Regex.Unescape(from_text);
}
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbChsToUnicode.Checked)
{
#region Unicode码
try
{
TxtResultCode.Text = GetUnicode(from_text);
}
catch { TxtResultCode.Text = ""; }
string GetUnicode(string text)
{
string result = "";
for (int i = 0; i < text.Length; i++)
{
//if ((int)text[i] > 32 && (int)text[i] < 127)
//{
// result += text[i].ToString();
//}
//else
result += string.Format("\\u{0:x4}", (int)text[i]);
}
return result;
}
#endregion
}
else if (RbUTF8ToChs.Checked)
{
#region UTF8转字符串
try
{
TxtResultCode.Text = RyWeb.WebDecode.Unescape(from_text.Replace("&#x","%u").Replace(";", ""));
}
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbChsToUTF8.Checked)
{
#region UTF8
try
{
TxtResultCode.Text = RyWeb.WebDecode.Escape(from_text);
}
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbBigToSmall.Checked)
{
#region
try
{
TxtResultCode.Text =from_text.ToLower();
}
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbSmallToBig.Checked)
{
#region
try
{
TxtResultCode.Text = from_text.ToUpper();
}
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbMD5.Checked)
{
#region MD5
try
{
TxtResultCode.Text = rySafe.MD5Sha1.GetMD5(from_text);
}
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbSHA1.Checked)
{
#region SHA1
try
{
TxtResultCode.Text = rySafe.MD5Sha1.GetSHA1(from_text);
}
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbSHA224.Checked)
{
#region SHA224
try
{
//TxtResultCode.Text = rySafe.MD5Sha1.GetSHA224(from_text);
}
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbSHA256.Checked)
{
#region SHA256
try
{
TxtResultCode.Text = rySafe.MD5Sha1.GetSHA256(from_text);
}
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbSHA512.Checked)
{
#region SHA256
try
{
TxtResultCode.Text = rySafe.MD5Sha1.GetSHA512(from_text);
}
catch { TxtResultCode.Text = ""; }
#endregion
}
else if (RbJsonToXML.Checked)
{
#region JSON=>XML
try
{
string json1 = @"{
""?xml"": {
""@version"": ""1.0"",
""@standalone"": ""no""
},
""root"":" + from_text + "}";
System.Xml.XmlDocument doc1 = JsonConvert.DeserializeXmlNode(json1);
TxtResultCode.Text = formatXml(doc1);
}
catch { TxtResultCode.Text = ""; }
#endregion
}
}
private static string formatXml(object xml)
{
XmlDocument xd;
if (xml is XmlDocument)
{
xd = xml as XmlDocument;
}
else
{
xd = new XmlDocument();
xd.LoadXml(xml as string);
}
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
XmlTextWriter xtw = null;
try
{
xtw = new XmlTextWriter(sw);
xtw.Formatting = System.Xml.Formatting.Indented;
xtw.Indentation = 1;
xtw.IndentChar = '\t';
xd.WriteTo(xtw);
}
finally
{
if (xtw != null)
xtw.Close();
}
return sb.ToString();
}
public string get_uft8(string unicodeString)
{
UTF8Encoding utf8 = new UTF8Encoding();
Byte[] encodedBytes = utf8.GetBytes(unicodeString);
String decodedString = utf8.GetString(encodedBytes);
return decodedString;
}
public static string gb2312_utf8(string text)
{
//声明字符集
System.Text.Encoding utf8, gb2312;
//gb2312
gb2312 = System.Text.Encoding.GetEncoding("gb2312");
//utf8
utf8 = System.Text.Encoding.GetEncoding("utf-8");
byte[] gb;
gb = gb2312.GetBytes(text);
gb = System.Text.Encoding.Convert(gb2312, utf8, gb);
//返回转换后的字符
return utf8.GetString(gb);
}
private void CbbEncodingCode_SelectedIndexChanged(object sender, EventArgs e)
{
AutoCode();
}
private void RbBase64Encode_CheckedChanged(object sender, EventArgs e)
{
RadioButton chk = (RadioButton)sender;
if (chk.Checked)
{
CbbEncodingCode.Enabled = true;
}
AutoCode();
}
private void RbUnicodeToChs_CheckedChanged(object sender, EventArgs e)
{
RadioButton chk = (RadioButton)sender;
if (chk.Checked)
{
CbbEncodingCode.Enabled = false;
}
AutoCode();
}
private void RbNoEncoding_CheckedChanged(object sender, EventArgs e)
{
RadioButton chk = (RadioButton)sender;
if (chk.Checked)
{
CbbEncodingCode.Enabled = false;
}
AutoCode();
}
private void TxtFromCode_TextChanged(object sender, EventArgs e)
{
AutoCode();
}
private void TxtFromCode_DoubleClick_1(object sender, EventArgs e)
{
ryControls.Controls.RichTextBox2 txt = (ryControls.Controls.RichTextBox2)sender;
.Controls.FrmText frm = new Controls.FrmText
{
Icon = Icon
};
frm.richTextBox1.Text = txt.Text;
if (frm.ShowDialog() == DialogResult.OK)
{
txt.Text = frm.richTextBox1.Text;
}
}
private void RbJsonToXML_CheckedChanged(object sender, EventArgs e)
{
RadioButton chk = (RadioButton)sender;
if (chk.Checked)
{
CbbEncodingCode.Enabled = false;
}
AutoCode();
}
private void RbBigToSmall_CheckedChanged(object sender, EventArgs e)
{
RadioButton chk = (RadioButton)sender;
if (chk.Checked)
{
CbbEncodingCode.Enabled = false;
}
AutoCode();
}
private void RbSmallToBig_CheckedChanged(object sender, EventArgs e)
{
RadioButton chk = (RadioButton)sender;
if (chk.Checked)
{
CbbEncodingCode.Enabled = false;
}
AutoCode();
}
}
}