Как записать .ini в формате \uXXXX ? - C#
Формулировка задачи:
Я пытаюсь записать файл ini, где все нестандартные не латинские буквы в таком формате:
Вот как я это делаю:
Но в файле всегда вижу только вопросы на месте нестандартных не латинских букв. Возможно преобразовать в \uXXXX кодировку, чтоб она отображалась в ini?
Русский = \u0420\u0443\u0441\u0441\u043A\u0438\u0439
Français = \u0046\u0072\u0061\u006E\u00E7\u0061\u0069\u0073\u0020
中國 = \u4E2D\u570B
日本の = \u65E5\u672C\u306E
العربية = \u0627\u0644\u0639\u0631\u0628\u064A\u0629
StreamWriter writer = new StreamWriter(@"test.ini", false, Encoding.ASCII);
writer.Write(data);
writer.Close();Решение задачи: «Как записать .ini в формате \uXXXX ?»
textual
Листинг программы
#define KOLOTUR
using System;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
private const int MAX_ITERS = 5000;
private static string CASE = "Теперь я вижу снова кириллицу в файле ini, вместо вопросов или \\uXXXX кодировки.";
private string PrepareSpeciment(string originalText)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < MAX_ITERS; i++)
{
sb.Append(originalText);
}
return sb.ToString();
}
#if KOLOTUR
private string Encode(string s)
{
if (string.IsNullOrEmpty(s) || s.All(c => c < 128))
return s;
var buffer = new StringBuilder(s.Length * 6);
foreach (int c in s)
buffer.AppendFormat(@"\u{0:X4}", c);
return buffer.ToString();
}
#endif
#if KLIEVE
private string Encode(string s)
{
return string.Join("", s.Select(c => "\\u" + ((int)c).ToString("x4")));
}
#endif
private void Run()
{
string spec = PrepareSpeciment(CASE);
Console.WriteLine(Encode(spec).Length);
}
static void Main(string[] args)
{
new Program().Run();
Console.WriteLine("DONE");
Console.ReadKey();
}
}
}