You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.4 KiB
43 lines
1.4 KiB
has-unicode |
|
=========== |
|
|
|
Try to guess if your terminal supports unicode |
|
|
|
```javascript |
|
var hasUnicode = require("has-unicode") |
|
|
|
if (hasUnicode()) { |
|
// the terminal probably has unicode support |
|
} |
|
``` |
|
```javascript |
|
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. |
|
|
|
|