文字エンコーディングを指定してテキストファイルを読み込むには、 File.ReadAllText の第二引数に Encoding を指定します。
サンプルでは、UTF8のテキストファイルを開いています。UTF8で開いたときは正しく表示できていますが、その他の文字エンコーディングで開いたときは、文字化けしています。
Shift_JIS |
EUC-JP |
UTF-8 |
UTF-16 |
MainWindow.xaml
<Window x:Class="WpfApplication2.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="250" Width="325">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Menu Grid.Row="0">
<MenuItem Header="開く" Click="MenuItem_Click">
<MenuItem Header="Shift_JIS" />
<MenuItem Header="EUC-JP" />
<MenuItem Header="UTF-8" />
<MenuItem Header="UTF-16" />
<MenuItem Header="UTF-16BE" />
<MenuItem Header="UTF-32" />
<MenuItem Header="UTF-32BE" />
</MenuItem>
</Menu>
<TextBox Grid.Row="1" Name="textBox1"
AcceptsReturn="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto" />
</Grid>
</Window>
MainWindow.xaml.cs
using Microsoft.Win32;
using System.IO;
using System.Text;
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication2
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == true)
{
MenuItem clickedMenuItem = (MenuItem)e.OriginalSource;
string encodingName = clickedMenuItem.Header as string;
Encoding encoding = Encoding.GetEncoding(encodingName);
string content = File.ReadAllText(ofd.FileName, encoding);
this.textBox1.Text = content;
}
}
}
}
0 件のコメント:
コメントを投稿