SuperDesign/Source/开发辅助工具/Tools/FrmEncode.cs
zilinsoft 7d0c050763 ## 2025-03-30 星期日更新
### RySmartEditor    V1.0.2503.3001
- *.[新增]在文件管理器中新增支持将所有站点对应的文件上传到FTP。
- *.[新增]新增支持自动同步选定文件到最新版。
### SuperDesign    V3.0.2503.3001
#### 项目功能->更新日志
- *.[修复]修复当更新日志为空时,插入更新分组会报错的BUG。
- *.[修复]修复存在多个分组时,添加修复日志会添加到最后一个分组末尾的BUG。
#### 网页抓取工具
- *.[改进]改进网页图标获取,支持获取更多网站的图标。
- *.[修复]修复当图标文件夹不存在时,读取图标会报错的BUG。
- *.[修复]修复当Url不是图片地址时,勾选获取图片会报错的BUG。
- *.[修复]某些情况下,当目标网站图标不存在时,点击执行按钮时会长时间等待的BUG。
- *.[修复]修复剪切板读取失败可能会导致程序异常退出的BUG。
- *.[修复]修复历史记录里的UserAgent值不正确导致无法执行操作的BUG。
2025-03-30 10:04:48 +08:00

361 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();
}
private void FrmEncode_Load(object sender, EventArgs e)
{
}
}
}