Создание нового ключа реестра с надлежащей кодировкой [duplicate]

Синтаксис запроса:

  var count = (из o в контексте.MyContainer, где o.ID == '1' из t в o.MyTable выберите t) .Count ();   

Синтаксис метода:

  var count = context.MyContainer .Where (o = & gt; o.ID == '1') .SelectMany (o  = & gt; o.MyTable) .Count ()  

Оба генерируют один и тот же SQL-запрос.

27
задан Stefan Valianu 17 June 2010 в 18:58
поделиться

6 ответов

Два вопроса, которые я бы прокомментировал.

Во-первых, вы не указываете, на какой платформе вы нацеливаетесь. Хотя последние версии Windows (Win2000, WinXP, Vista и Win7) поддерживают как многобайтовые, так и Unicode-версии системных вызовов с использованием строк, версии Unicode быстрее (многобайтовые версии являются оболочками, которые конвертируются в Unicode, вызывают версию Unicode, а затем конвертируют любые возвращенные строки обратно к mutlibyte). Поэтому, если вы делаете много таких вызовов, Unicode будет быстрее.

Просто потому, что вы не планируете явно поддерживать дополнительные языки, вам все равно следует рассмотреть возможность поддержки Unicode, если ваше приложение сохраняет и отображает текст, введенный пользователями. Просто потому, что ваше приложение является неязычным, из этого не следует, что все его пользователи также будут иметь язык. Они могут быть очень рады использовать ваш графический интерфейс на английском языке, но могут захотеть ввести имена, комментарии или другой текст на своем родном языке и правильно отобразить их.

25
ответ дан Stephen C. Steel 16 August 2018 в 08:02
поделиться
  • 1
    «вы все равно должны поддерживать поддержку Unicode, если ваше приложение сохраняет и отображает текст, введенный пользователями». - и если ваше приложение хочет иметь дело с путями с произвольными символами - и если оно имеет дело с путями, оно должно. – Matteo Italia 17 June 2010 в 19:26
  • 2
    Это именно то, что я хотел услышать ... это одна оболочка для другой. Юникод полностью ребенок. – Stefan Valianu 17 June 2010 в 19:56
  • 3
    Приветствую ребенка. – Nik-Lz 1 December 2017 в 12:44

Первый ответ на этот вопрос должен ... ответить на все, что вам нужно знать.

1
ответ дан Community 16 August 2018 в 08:02
поделиться
5
ответ дан dan04 16 August 2018 в 08:02
поделиться

Короткий ответ (IMO, и я ошибался) заключается в том, что лучше планировать худшее (или лучше всего в зависимости от вашей точки зрения) и делать unicode прямо сейчас.

Если ваше приложение не очень интенсивно, то переходить непосредственно к unicode не имеет значения; в случае игр это не должно быть большим фактором по сравнению с остальной частью двигателя.

Макс.

9
ответ дан Max 16 August 2018 в 08:02
поделиться
  • 1
    Что если, по какой-то магической причине, вы используете строку символов в узком цикле. Будет ли значительная разница в производительности? – Stefan Valianu 17 June 2010 в 18:48
  • 2
    @Stefan: Это зависит от того, что вы делаете с этой строкой. Если вы копируете его и состоит в основном из символов ASCII, версия MB будет немного короче, поэтому копирование может быть быстрее. Если вы выполняете фактическую строчную обработку, версия Юникода, вероятно, будет более эффективной из-за ее более простой структуры. Но на самом деле, это такой абсурдно гипотетический вопрос, если это бессмысленно. Ваш ответ «не имеет значения с точки зрения производительности, и он никогда не будет, и если это так, вы должны проверить оба и посмотреть, что работает лучше всего». – jalf 17 June 2010 в 19:10
  • 3
    Кроме того, если это важно для производительности, вы можете просто оптимизировать этот конкретный цикл без изменения типа проекта. – Brian 17 June 2010 в 19:34

Вот простое соображение: должна ли ваша программа работать, если она используется г-ном 菅 直 人? Его домашний каталог может быть трудно представить в ASCII.

8
ответ дан MSalters 16 August 2018 в 08:02
поделиться

Вы говорите о настройке проекта VC ++ здесь, правда?

Единственная вещь, на которую это влияет, - это версия вызовов API Win32, которая заканчивается тем, что она вызывается. Например, вызов MessageBox будет завершен в качестве вызова MessageBoxA в случае многобайтовой настройки и MessageBoxW в случае Настройка Юникода. Конечно, это повлияет и на типы строковых параметров на эти функции. Внутри MessageBoxA вызывает MessageBoxW после преобразования параметров строки из текущего языкового стандарта системы в Unicode.

Мой совет - использовать настройки Unicode и передать Unicode строки для вызовов API Win32. Это не мешает вам использовать строки в любой другой кодировке внутри.

10
ответ дан Nemanja Trifunovic 16 August 2018 в 08:02
поделиться
Другие вопросы по тегам:

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