Skip to content

Commit 78e821d

Browse files
committed
增加乱码修复功能
1 parent 7f71e2c commit 78e821d

8 files changed

Lines changed: 141 additions & 1 deletion

File tree

llcom/Pages/EncodingFixPage.xaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<Page x:Class="llcom.Pages.EncodingFixPage"
2+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:local="clr-namespace:llcom.Pages"
7+
mc:Ignorable="d"
8+
d:DesignHeight="450" d:DesignWidth="800"
9+
Title="EncodingFixPage">
10+
<ScrollViewer HorizontalScrollBarVisibility="Auto">
11+
<StackPanel>
12+
<TextBlock Text="{DynamicResource GarbledCodeData}"/>
13+
<TextBox Name="RawTextBox" Height="60" VerticalContentAlignment="Top" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" Margin="2" TextChanged="RawTextBox_TextChanged"/>
14+
<TextBlock Text="{DynamicResource GarbledCodeDataFixed}"/>
15+
<ListView Name="FixResultList" ItemsSource="{Binding}" MouseDown="FixResultList_MouseDown">
16+
<ListView.View>
17+
<GridView>
18+
<GridViewColumn Header="{DynamicResource GarbledCodeDataRaw}" DisplayMemberBinding="{Binding raw}"/>
19+
<GridViewColumn Header="{DynamicResource GarbledCodeDataTarget}" DisplayMemberBinding="{Binding target}"/>
20+
<GridViewColumn Header="{DynamicResource GarbledCodeDataResult}" Width="180" DisplayMemberBinding="{Binding result}"/>
21+
</GridView>
22+
</ListView.View>
23+
</ListView>
24+
</StackPanel>
25+
</ScrollViewer>
26+
</Page>
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using System.Windows;
7+
using System.Windows.Controls;
8+
using System.Windows.Data;
9+
using System.Windows.Documents;
10+
using System.Windows.Input;
11+
using System.Windows.Media;
12+
using System.Windows.Media.Imaging;
13+
using System.Windows.Navigation;
14+
using System.Windows.Shapes;
15+
16+
namespace llcom.Pages
17+
{
18+
/// <summary>
19+
/// EncodingFixPage.xaml 的交互逻辑
20+
/// </summary>
21+
public partial class EncodingFixPage : Page
22+
{
23+
public EncodingFixPage()
24+
{
25+
InitializeComponent();
26+
}
27+
class fixedData
28+
{
29+
public string raw { get; set; }
30+
public string target { get; set; }
31+
public string result { get; set; }
32+
}
33+
34+
string[] encodingList = new string[]
35+
{
36+
"UTF-8",
37+
"GBK",
38+
"windows-1252",
39+
"Big5",
40+
"Shift_Jis",
41+
"iso-8859-1",
42+
};
43+
44+
private void RawTextBox_TextChanged(object sender, TextChangedEventArgs e)
45+
{
46+
FixResultList.Items.Clear();
47+
for(int i = 0; i < encodingList.Length; i++)
48+
{
49+
for(int j = 0; j < encodingList.Length; j++)
50+
{
51+
if (i == j)
52+
continue;
53+
FixResultList.Items.Add(new fixedData
54+
{
55+
raw = encodingList[i],
56+
target = encodingList[j],
57+
result = Encoding.GetEncoding(encodingList[i]).GetString(Encoding.GetEncoding(encodingList[j]).GetBytes(RawTextBox.Text))
58+
});
59+
}
60+
}
61+
}
62+
63+
private void FixResultList_MouseDown(object sender, MouseButtonEventArgs e)
64+
{
65+
if (e.RightButton == MouseButtonState.Pressed)
66+
{
67+
//获取单元格内容
68+
string copiedData = (FixResultList.SelectedItem as fixedData).result;
69+
if (string.IsNullOrEmpty(copiedData)) return;
70+
//复制到剪贴板
71+
Clipboard.Clear();
72+
Clipboard.SetData(DataFormats.Text, copiedData);
73+
MessageBox.Show("copyed:\r\n" + copiedData);
74+
}
75+
}
76+
}
77+
}

llcom/Pages/MqttTestPage.xaml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,18 @@
1010
Loaded="Page_Loaded">
1111

1212
<Grid>
13-
13+
<Grid.RowDefinitions>
14+
<RowDefinition Height="auto"/>
15+
<RowDefinition Height="auto"/>
16+
<RowDefinition Height="auto"/>
17+
<RowDefinition Height="auto"/>
18+
</Grid.RowDefinitions>
19+
<TextBlock Text="制作中。。。"/>
20+
<Expander Header="配置信息" Grid.Row="1">
21+
<StackPanel>
22+
<TextBlock Text="22121"/>
23+
<TextBlock Text="add3er"/>
24+
</StackPanel>
25+
</Expander>
1426
</Grid>
1527
</Page>

llcom/View/MainWindow.xaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,9 @@
326326
<TabItem Header="MQTT">
327327
<Frame Name="MqttTestFrame" NavigationUIVisibility="Hidden"/>
328328
</TabItem>
329+
<TabItem Header="{DynamicResource EncodingFixHeader}">
330+
<Frame Name="EncodingFixFrame" NavigationUIVisibility="Hidden"/>
331+
</TabItem>
329332
</TabControl>
330333
</TabItem>
331334
</TabControl>

llcom/View/MainWindow.xaml.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ private void Window_Loaded(object sender, RoutedEventArgs e)
138138
//编码转换工具页面
139139
EncodingToolsFrame.Navigate(new Uri("Pages/ConvertPage.xaml", UriKind.Relative));
140140

141+
//乱码修复
142+
EncodingFixFrame.Navigate(new Uri("Pages/EncodingFixPage.xaml", UriKind.Relative));
143+
141144
this.Title += $" - {System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()}";
142145

143146

llcom/languages/en-US.xaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,10 @@
120120
<system:String x:Key="EncodingToolsDeleteJob">Remove Last one</system:String>
121121
<system:String x:Key="EncodingToolsRowData">Raw data</system:String>
122122
<system:String x:Key="EncodingToolsResultData">Result</system:String>
123+
<system:String x:Key="EncodingFixHeader">Garbled code fix</system:String>
124+
<system:String x:Key="GarbledCodeData">unfixed Garbled code:</system:String>
125+
<system:String x:Key="GarbledCodeDataFixed">Fixed list:</system:String>
126+
<system:String x:Key="GarbledCodeDataRaw">Raw</system:String>
127+
<system:String x:Key="GarbledCodeDataTarget">Wrong</system:String>
128+
<system:String x:Key="GarbledCodeDataResult">Fix Result (right click here to copy selected text)</system:String>
123129
</ResourceDictionary>

llcom/languages/zh-CN.xaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,10 @@
120120
<system:String x:Key="EncodingToolsDeleteJob">删除末项</system:String>
121121
<system:String x:Key="EncodingToolsRowData">原始数据</system:String>
122122
<system:String x:Key="EncodingToolsResultData">转换结果</system:String>
123+
<system:String x:Key="EncodingFixHeader">乱码修复</system:String>
124+
<system:String x:Key="GarbledCodeData">待处理乱码数据:</system:String>
125+
<system:String x:Key="GarbledCodeDataFixed">修复尝试:</system:String>
126+
<system:String x:Key="GarbledCodeDataRaw">原编码</system:String>
127+
<system:String x:Key="GarbledCodeDataTarget">错当成</system:String>
128+
<system:String x:Key="GarbledCodeDataResult">还原结果(右击此处,复制选中)</system:String>
123129
</ResourceDictionary>

llcom/llcom.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,9 @@
204204
<Compile Include="Pages\ConvertPage.xaml.cs">
205205
<DependentUpon>ConvertPage.xaml</DependentUpon>
206206
</Compile>
207+
<Compile Include="Pages\EncodingFixPage.xaml.cs">
208+
<DependentUpon>EncodingFixPage.xaml</DependentUpon>
209+
</Compile>
207210
<Compile Include="Pages\MqttTestPage.xaml.cs">
208211
<DependentUpon>MqttTestPage.xaml</DependentUpon>
209212
</Compile>
@@ -244,6 +247,10 @@
244247
<SubType>Designer</SubType>
245248
<Generator>MSBuild:Compile</Generator>
246249
</Page>
250+
<Page Include="Pages\EncodingFixPage.xaml">
251+
<SubType>Designer</SubType>
252+
<Generator>MSBuild:Compile</Generator>
253+
</Page>
247254
<Page Include="Pages\MqttTestPage.xaml">
248255
<SubType>Designer</SubType>
249256
<Generator>MSBuild:Compile</Generator>

0 commit comments

Comments
 (0)