Отображение хинди (unicode) в консоли Windows [дубликат]

Вам нужно подождать, пока ваше изображение загрузится, прежде чем вы сможете нарисовать его на холсте.

Для этого просто используйте обработчик события load вашего элемента :

// create a new image
var img = new Image();
// declare a function to call once the image has loaded
img.onload = function(){
  var canvas = document.createElement('canvas');
  canvas.width = img.width;
  canvas.height = img.height;
  var context = canvas.getContext('2d');
  context.drawImage(img, 0,0);
  var dataURL = canvas.toDataURL();
  // now you can do something with the dataURL
  doSomething(dataURL);
}
// now set the image's src
img.src = "http://somerandomWebsite/picture.png";

Кроме того, для холста 'context.toDataURL() и context.getImageData для работайте правильно, вы должны получить свой ресурс изображения в соответствии с кросс-оригинальным способом , в противном случае холст «испорчен», что означает, что любой метод получения данных с пикселями будет заблокирован.

  • Если ваше изображение поступает с одного и того же сервера, нет проблем.
  • Если ваше изображение подано с внешнего сервера, убедитесь, что оно позволяет вашим в своих кросс-начальных заголовках и установить img.crossOrigin на "use-credentials".
  • Если сервер разрешает анонимные запросы, вы можете установить img.crossOrigin на "anonymous".

Nota Bene : Сервер CORS отправляется сервером, а атрибут cross-origin сообщает, что вы хотите использовать CORS для получения данных изображения, и вы не сможете обойти его, если сервер установлен неправильно. Кроме того, некоторые UserAgents (IE & amp; Safari) до сих пор не реализовали этот атрибут.

Edge Case : Если некоторые из ваших изображений находятся на вашем сервере, а некоторые из них соответствуют требованиям CORS один, тогда вы можете захотеть использовать обработчик события onerror, который должен срабатывать, если вы установите атрибут cross-origin на "anonymous" на сервере без CORS.

function corsError(){
  this.crossOrigin='';
  this.src='';
  this.removeEventListener('error', corsError, false);
} 
img.addEventListener('error', corsError, false);

49
задан Brandon DuRette 18 December 2008 в 21:56
поделиться

11 ответов

Откройте командную строку с повышенными правами (запустите cmd as administrator). Запросите свой реестр для доступных шрифтов TrueType на консоли:

REG query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont"

Вы увидите вывод, например:

0    REG_SZ    Lucida Console
00    REG_SZ    Consolas
936    REG_SZ    *新宋体
932    REG_SZ    *MS ゴシック

Теперь нам нужно добавить шрифт TrueType, который поддерживает символы, которые вам нужны, как Courier New, мы делаем это, добавляя нули к имени строки, поэтому в этом случае следующий будет «000»:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" /v 000 /t REG_SZ /d "Courier New"

Теперь мы реализуем поддержку UTF-8:

REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f

Установите шрифт по умолчанию на «Courier New»:

REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Courier New" /f

Установите размер шрифта до 20:

REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 20 /f

Включите быстрое редактирование, если вы например:

REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f
18
ответ дан Peter Mortensen 18 August 2018 в 03:54
поделиться
  • 1
    Активировано для предложения рабочего решения проблемы. Я бы согласился с этим, если бы не надеялся на что-то лучше. Как «ранняя альфа», он имеет долгий путь, чтобы стать действительно используемой оболочкой. – Brandon DuRette 18 December 2008 в 22:44
  • 2
    Нынешний CTP3 невероятно стабилен и, к сожалению, речь идет о единственном решении в эти дни, которое не связано с выплатой денег. – Don Jones 30 December 2008 в 15:58
  • 3
    По вашему предложению я попробовал, и это, похоже, не решает мою проблему. Запуск 'dir' в каталоге с файлами с именами, включающими корейские символы, приводит к? Такое поведение аналогично cmd.exe. – Brandon DuRette 8 January 2009 в 22:21
  • 4
    ОК. Console2, вероятно, также использует консоль Windows, а затем, только с более приятным интерфейсом. – Kim André Sand 9 January 2009 в 19:33
  • 5
    Поскольку эта старая тема недавно попала в верхнюю часть списка, я отредактировал основной ответ со ссылкой на последние биты Powershell. – Richard Berg 19 September 2009 в 05:14
  • 6
    Я не понимаю. Где находится эта «графическая оболочка»? Я использую Windows 8.1, и вызывать Powershell по-прежнему, похоже, используют кодовую страницу 1252 (на моем ноутбуке в США). – Jason R. Coombs 20 April 2014 в 22:20
  • 7
    Кажется, Powershell ISE - графическая оболочка. Это всплывающие окна с завершением и т. Д. – sandos 14 January 2015 в 12:35
18
ответ дан Peter Mortensen 6 September 2018 в 18:32
поделиться
18
ответ дан Peter Mortensen 30 October 2018 в 00:19
поделиться

Также из UTF-16 на cmd.exe

    Open/run cmd.exe
    Click on the icon at the top-left corner
    Select properties
    Then "Font" bar
    Select "Lucida Console" and OK.
    Write Chcp 10000 at the prompt
    Finally dir /b
-1
ответ дан Community 18 August 2018 в 03:54
поделиться
  • 1
    10000 не является кодовой страницей Юникода, и она может not отображать символы за пределами Mac Roman charset – phuclv 10 June 2014 в 10:59

Быстрый и удобный способ сделать это в проводнике.

    1. Open the Explorer window.
    2. Traverse to the top level of directory where you want to find.
    3. On the upper right corner, there is a find field.
-3
ответ дан david m lee 18 August 2018 в 03:54
поделиться

Попробуйте следующее:

powershell.exe -NoExit /c "chcp.com 65001"

Кто использует msysgit:

powershell.exe -NoExit /c "chcp.com 65001; sh --login -i"

Не забудьте изменить шрифт окна на TrueType шрифт с поддержкой UTF-8 («Lucida Console «) [/ д2]

5
ответ дан iegik 18 August 2018 в 03:54
поделиться
  • 1
    Это хорошо работает, так что мои символы utf8 отображаются правильно. Есть ли способ сделать конфигурацию powershell.exe постоянной (chcp.com 65001), чтобы она была выбрана по умолчанию? – chmike 19 August 2014 в 15:28
  • 2
    cmd с тем же, как вы настраиваете, также работает chcp 65001, затем выберите шрифт Lucida console – alljoyland 25 August 2014 в 17:34
  • 3
    Я использую msysgit в PowerShell со следующей конфигурацией: gist.github.com/iegik/7485025 – iegik 5 September 2014 в 08:24

Установка кодовой страницы в UTF-8 с помощью команды chcp 65001 должна помочь вам правильно распечатать содержимое файла в оболочке (с помощью cmd.exe). Это не будет работать для каталогов, хотя (кодировка UTF-16 в именах файлов NTFS).

6
ответ дан Kim André Sand 18 August 2018 в 03:54
поделиться
  • 1
    Хороший ответ. Это работает и в Powershell. – Jason R. Coombs 20 April 2014 в 22:22

Чтобы сделать это с помощью cmd.exe , вам нужно использовать диалог свойств консоли, чтобы переключиться на шрифт Unicode TrueType.

Затем используйте следующие команды:

 CHCP 65001
 DIR > UTF8.TXT
 TYPE UTF8.TXT

Команды:

  • Консоль консоли для UTF-8 (65001)
  • Перенаправить вывод DIR в UTF8.TXT ]
  • Дамп UTF-8 на консоль

Символы по-прежнему должны поддерживаться шрифтом для правильного отображения на консоли.

I18N: Unicode в командной строке Windows (C ++; .Net; Java)

39
ответ дан McDowell 18 August 2018 в 03:54
поделиться

Вот как я могу получить китайский выход в cmd.exe, работающий на Windows 7 Pro English Version. Я также пробовал имена файлов на японском, русском и польском языках, и все они выглядят корректно. Входы также работают, по крайней мере, когда я пытался сделать dir xxx*, содержащие символы без ascii.

  1. Установите console2 , который является интерфейсом для cmd.exe (и другие оболочки)
  2. После установки следуйте этим инструкциям Удалите ключ HKEY_CURRENT_USER\Console\Console2 command window в реестре. Импортируйте следующие данные в реестр Windows:
    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Console\Console2 command window] 
    "CodePage"=dword:000003a8 
    "FontSize"=dword:000a0000 
    "FontFamily"=dword:00000036 
    "FontWeight"=dword:00000190 
    "FaceName"="細明體" 
    "HistoryNoDup"=dword:00000000
    
  3. Возможно, вам может понадобиться изменить шрифт. Первоначально у меня был шрифт, установленный на @NimSum, и китайские символы вышли вращением на 90 градусов. Затем я переключился на NimSum (без @), и он вышел правильно. Тогда просто из любопытства я переключился на Consola, и все же я все еще вижу китайских иероглифов. Поэтому я не уверен, действительно ли вам нужно установить шрифт или нет.
2
ответ дан Neil 18 August 2018 в 03:54
поделиться

Начиная с November 2011 , MinTTY теперь является эмулятором терминала Cygwin по умолчанию (установленным setup.exe). MinTTY - это вилка эмулятора терминала PuTTY, и, как таковая, поддерживает надлежащую поддержку Unicode и значительно улучшает совместимость с другими эмуляторами терминалов.

0
ответ дан nneonneo 18 August 2018 в 03:54
поделиться

PowerShell V2 CTP3 внутри Консоль2 , похоже, делает это. Единственным недостатком является то, что стандартная консольная кодировка - UCS-2 LE вместо UTF-8.

0
ответ дан Robin Smidsrød 18 August 2018 в 03:54
поделиться
Другие вопросы по тегам:

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