在GitHub上有个项目,本来是作为自己研究学习.net core的Demo,没想到很多同学在看,还给了很多星,所以觉得应该升成3.0,整理一下,写成博分享给学习.net core的同学们。
项目名称:Asp.NetCoreExperiment
项目地址:https://github.com/axzxs2001/Asp.NetCoreExperiment
今天先分享几个对日编程的小知识点
1、关于BOM(Byte Order Mark)知识点( https://baike.baidu.com/item/BOM/2790364)
Github库代码(https://github.com/axzxs2001/Asp.NetCoreExperiment/blob/master/Asp.NetCoreExperiment/Common/UFT8_Bom_Demo/Program.cs)
Bom格式就是在开头添加三个字节-EF,BB,BF,来声明UTF-8格式
在.net core中,生成Bom的代码如下:
1 class Program
2 {
3 static void Main(string[] args)
4 {
5 GenerateBom1();
6 GenerateBom2();
7 }
8 /// <summary>
9 /// 方式一,利用UTF8Encoding构造函数来添加EF,BB,BF开头字节流
10 /// </summary>
11 static void GenerateBom1()
12 {
13 var encoding = new UTF8Encoding(true);
14 var filePath = Directory.GetCurrentDirectory() + "/bom1.txt";
15 if (File.Exists(filePath))
16 {
17 File.Delete(filePath);
18 }
19 using (var reader = new StreamWriter(filePath, false, encoding))
20 {
21 //写入的内容
22 reader.WriteLine("bom1");
23 reader.Close();
24 }
25 }
26 /// <summary>
27 /// 方式二,手动方式添加EF,BB,BF开头字节流
28 /// </summary>
29 static void GenerateBom2()
30 {
31 //写入的内容
32 var list = new List<byte>(Encoding.UTF8.GetBytes("bom2"));
33 list.InsertRange(0, new byte[] { 239, 187, 191 });// EF=239 BB=187 BF=191
34 var filePath = Directory.GetCurrentDirectory() + "/bom2.txt";
35 if (File.Exists(filePath))
36 {
37 File.Delete(filePath);
38 }
39 using (var stream = new FileStream(filePath, FileMode.CreateNew))
40 {
41 stream.Write(list.ToArray(), 0, list.Count);
42 stream.Close();
43 }
44 }
45 }
2、日本日历
GitHub代码库(https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/Common/CalendarDemo)
1 static void JapaneseTest()
2 {
3 var dt = DateTime.Now;
4 Console.WriteLine(dt);
5 //日本日历
6 var jpci = new System.Globalization.CultureInfo("ja-JP");
7 var jpcal = new System.Globalization.JapaneseCalendar();
8 jpci.DateTimeFormat.Calendar = jpcal;
9 Console.WriteLine(dt.ToString("ggyy/MM/dd", jpci)); //令和01/10/07
10 }
3、日语字符串转换Hankana,Katakana,Hiragana
GitHub代码库(https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/Common/JanpaneseFullHalfWidthTransfer)
1 class Program
2 {
3 private const string Hankana =
4 "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロワヲンヴヷヺ゙゚ー。「」、・";
5
6 private const string Katakana =
7 "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロワヲンヴ\u30F7\u30FA゛゜ー。「」、・";
8
9 private const string Hiragana =
10 "ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろわをん\u3094\u30F7\u30FA" +
11 "゛゜ー。「」、・";
12
13 private const string KatakanaOdoriji = "ヽヾ";
14
15 private const string HiraganaOdoriji = "ゝゞ";
16
17 static void Main(string[] args)
18 {
19 Console.OutputEncoding = Encoding.UTF8;
20 // Katakana-Hankana
21 Console.WriteLine($"========================KatakanaToHankana======================");
22 Console.WriteLine($"old Katakana:{Katakana}");
23 Console.WriteLine($"converted Hankana:{KanaConverter.Convert(Katakana, KanaOption.KatakanaToHankana)}");
24 Console.WriteLine();
25
26 //Hankana-Katakana
27 Console.WriteLine($"========================HankanaToKatakana=======================");
28 Console.WriteLine($"old Hankana:{Hankana}");
29 Console.WriteLine($"converted Katakana:{KanaConverter.Convert(Hankana, KanaOption.HankanaToKatakana)}");
30 Console.WriteLine();
31
32 // Hiragana-Hankana
33 Console.WriteLine($"========================HiraganaToHankana=======================");
34 Console.WriteLine($"old Hiragana:{Hiragana}");
35 Console.WriteLine($"converted Hankana:{KanaConverter.Convert(Hiragana, KanaOption.HiraganaToHankana)}");
36 Console.WriteLine();
37
38 //Hankana--Hiragana
39 Console.WriteLine($"========================HankanaToHiragana=======================");
40 Console.WriteLine($"old Hankana:{Hankana}");
41 Console.WriteLine($"converted Hiragana:{KanaConverter.Convert(Hankana, KanaOption.HankanaToHiragana)}");
42 Console.WriteLine();
43
44 //Katakana-Hiragana
45 Console.WriteLine($"========================KatakanaToHiragana=======================");
46 Console.WriteLine($"old Katakana:{Katakana}");
47 Console.WriteLine($"converted Hiragana:{KanaConverter.Convert(Katakana, KanaOption.KatakanaToHiragana)}");
48 Console.WriteLine();
49
50 //Hiragana-Katakana
51 Console.WriteLine($"========================HiraganaToKatakana=======================");
52 Console.WriteLine($"old Hiragana:{Hiragana}");
53 Console.WriteLine($"converted Katakana:{KanaConverter.Convert(Hiragana, KanaOption.HiraganaToKatakana)}");
54 Console.WriteLine();
55
56 //Katakana-Hiragana
57 Console.WriteLine($"========================KatakanaToHiragana=======================");
58 Console.WriteLine($"old KatakanaOdoriji:{KatakanaOdoriji}");
59 Console.WriteLine($"converted HiraganaOdoriji:{KanaConverter.Convert(KatakanaOdoriji, KanaOption.KatakanaToHiragana)}");
60 Console.WriteLine();
61
62 //Hiragana-Katakana
63 Console.WriteLine($"========================HiraganaToKatakana=======================");
64 Console.WriteLine($"old HiraganaOdoriji:{HiraganaOdoriji}");
65 Console.WriteLine($"converted KatakanaOdoriji:{KanaConverter.Convert(HiraganaOdoriji, KanaOption.HiraganaToKatakana)}");
66 Console.WriteLine();
67 Console.ReadLine();
68
69
70 }
71 }
4、Shift-JIS格式输出
GitHub代码库(https://github.com/axzxs2001/Asp.NetCoreExperiment/tree/master/Asp.NetCoreExperiment/Common/Shift_JISDemo)
1 static void Main(string[] args)
2 {
3 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
4 var jis = Encoding.GetEncoding("shift_jis");
5 File.WriteAllText(Directory.GetCurrentDirectory() + "/a.txt", "こんにちは", jis);
6 }
****欢迎关注我的asp.net core系统课程**** 《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524