Что не так, так это то, что строка (key
) не имеет представления о байтах, использованных для ее хранения.В этом случае ваша строка:
String :
アップロードするファイルが指定されていません
Это именно то, что означает
"\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093"
.Выражение '\u30a3'
выглядит как 2 байта Unicode, но на самом деле оно просто означает символ 'ア'
.
при сохранении в файл UTF-8 записанные байты будут иметь вид:
байтов UTF-8
File.WriteAllText("temp.txt", "アップロードするファイルが指定されていません", Encoding.UTF8);
Содержимое будетbe (в байтах)
E3 82 A2 E3 83 83 E3 83 97 E3 83 AD E3 83 BC E3 83 89 E3 81 99 E3 82 8B E3 83
95 E3 82 A1 E3 82 A4 E3 83 AB E3 81 8C E6 8C 87 E5 AE 9A E3 81 95 E3 82 8C E3
81 A6 E3 81 84 E3 81 BE E3 81 9B E3 82 93
UTF-16 байтов
File.WriteAllText("temp.txt", "アップロードするファイルが指定されていません", Encoding.Unicode);
Содержимое будет (в байтах)
A2 30 C3 30 D7 30 ED 30 FC 30 C9 30 59 30 8B 30 D5 30 A1 30 A4 30 EB 30 4C 30
07 63 9A 5B 55 30 8C 30 66 30 44 30 7E 30 5B 30 93 30