Skip to content
Snippets Groups Projects
Select Git revision
  • b53f038fafcb04b06c97ad756ffdc78321068dad
  • master default protected
2 results

has-unicode

  • Clone with SSH
  • Clone with HTTPS
  • Neil Gershenfeld's avatar
    Neil Gershenfeld authored
    8acf8f08
    History
    Name Last commit Last update
    ..
    LICENSE
    README.md
    index.js
    package.json

    has-unicode

    Try to guess if your terminal supports unicode

    var hasUnicode = require("has-unicode")
    
    if (hasUnicode()) {
      // the terminal probably has unicode support
    }
    var hasUnicode = require("has-unicode").tryHarder
    hasUnicode(function(unicodeSupported) {
      if (unicodeSupported) {
        // the terminal probably has unicode support
      }
    })

    Detecting Unicode

    What we actually detect is UTF-8 support, as that's what Node itself supports. If you have a UTF-16 locale then you won't be detected as unicode capable.

    Windows

    Since at least Windows 7, cmd and powershell have been unicode capable, but unfortunately even then it's not guaranteed. In many localizations it still uses legacy code pages and there's no facility short of running programs or linking C++ that will let us detect this. As such, we report any Windows installation as NOT unicode capable, and recommend that you encourage your users to override this via config.

    Unix Like Operating Systems

    We look at the environment variables LC_ALL, LC_CTYPE, and LANG in that order. For LC_ALL and LANG, it looks for .UTF-8 in the value. For LC_CTYPE it looks to see if the value is UTF-8. This is sufficient for most POSIX systems. While locale data can be put in /etc/locale.conf as well, AFAIK it's always copied into the environment.