Как я определяю набор символов строки?

Прежде всего, вы можете использовать await Task.Delay(10) вместо Thread.Sleep(10) и изменить свой метод AsyncTicToc на async Task без запуска потока. Это сделает изменение элемента управления в потоке пользовательского интерфейса (контекст, от которого вы ожидали).

Во-вторых, чтобы обновить пользовательский интерфейс из других потоков, если вы не хотите использовать диспетчер напрямую, вы можете использовать абстракцию над ним: класс SynchronizationContext . См. Больше информации здесь .

Пример: SynchronizationContext.Current.Post(action, actionParameter);

В-третьих, более уместно использовать модель представления и привязку. Если вы используете WPF, он синхронизирует потоки для изменений свойств для вас.

7
задан brian d foy 26 November 2008 в 12:33
поделиться

3 ответа

Если Вы не знаете набора символов наверняка, можно только предположить в основном. utf8:: допустимый мог бы помочь Вам с этим, но Вы не можете действительно знать наверняка. Если Вы знаете, что, если это не unicode, это должен быть определенный набор символов (Как латинский 1), Вы удачный. Если Вы понятия не имеете, Вы завинчены. В любом случае необходимо всегда предполагать, что целый файл находится в том же наборе символов, если иначе не указано. Вы потеряете свою исправность, если Вы не сделаете.

Что касается Вашего вопроса, как преобразовать между наборами символов: Закодируйте там, чтобы сделать это для Вас

6
ответ дан 6 December 2019 в 15:37
поделиться

Определение, является ли файл, вероятно, UTF-8 или не должен быть довольно легким. Определение кодирования, если бы это не UTF-8, было бы очень трудным в целом.

Если файл кодируется UTF-8, высокие биты каждого байта должны следовать за шаблоном. Если символ составит один байт, то его высокий бит будет очищен (обнуляют). Иначе, n символ байта (где n 2–4) будет иметь верхний уровень n биты первого набора байта одному, сопровождаемому единственным нулевым битом. Следующее n - 1 байты должны все иметь самый высокий набор битов и второй по высоте очищенный бит.

Если все байты в Вашем файле следуют этим правилам, он, вероятно, кодируется UTF-8. Я говорю, вероятно, потому что любой может изобрести новое кодирование, которое, оказывается, следует тем же правилам, сознательно или случайно, но интерпретирует коды по-другому.

Обратите внимание, что файл, закодированный US-ASCII, будет следовать этим правилам, но высокий бит каждого байта является нулем. Это должно хорошо рассматривать такой файл как UTF-8, так как они совместимы в этом диапазоне. Иначе это - некоторое другое кодирование, и нет свойственного теста для различения кодирования. Необходимо будет использовать некоторое контекстное знание для предположения.

6
ответ дан 6 December 2019 в 15:37
поделиться
2
ответ дан 6 December 2019 в 15:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: