Terminal control/Unicode output: Difference between revisions
m
syntax highlighting fixup automation
(Terminal control/Unicode output in FreeBASIC) |
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
||
Line 8:
=={{header|Arturo}}==
<
any? @[
if key? env "LC_ALL" -> contains? lower get env "LC_ALL" "utf-8"
Line 19:
print "Terminal handle unicode and U+25B3 is: △"
else ->
print "Unicode is not supported on this terminal"</
{{out}}
Line 27:
=={{header|AutoHotkey}}==
<
hConsole:=DllCall("GetConsoleWindow","UPtr")
Stdout:=FileOpen(DllCall("GetStdHandle", "int", -11, "ptr"), "h `n")
Line 81:
Pause() {
RunWait, %comspec% /c pause>NUL
}</
=={{header|AWK}}==
<
BEGIN {
unicodeterm=1 # Assume Unicode support
Line 109:
print "HW65001 This program requires a Unicode compatible terminal"|"cat 1>&2"
exit 252 # Incompatible hardware
}</
=={{header|BaCon}}==
<code>LANG</code> environment test borrowed from C solution.
<
' if so display delta, if not display error message
LET lc$ = GETENVIRON$("LANG")
Line 120:
ELSE
EPRINT "Sorry, terminal is not testing as unicode ready"
END IF</
=={{header|BBC BASIC}}==
{{works with|BBC BASIC for Windows}}
<
*FONT Arial Unicode MS,36
PRINT CHR$(&E2)+CHR$(&96)+CHR$(&B3)</
=={{header|C}}==
<syntaxhighlight lang="c">
#include<stdlib.h>
#include<stdio.h>
Line 156:
return 0;
}
</syntaxhighlight>
Output:
<pre>
Line 163:
=={{header|Clojure}}==
<
(if-not (empty? (filter #(and (not (nil? %)) (.contains (.toUpperCase %) "UTF"))
(map #(System/getenv %) ["LANG" "LC_ALL" "LC_CTYPE"])))
"Unicode is supported on this terminal and U+25B3 is : \u25b3"
"Unicode is not supported on this terminal.")
</syntaxhighlight>
{{out}}
Line 175:
=={{header|Common Lisp}}==
Each implementation has a different "getenv" function, to work with various implementations was created the "my-getenv" function.
<
(defun my-getenv (name &optional default)
#+CMU
Line 195:
(format t "Unicode is not supported on this terminal.~&")
)
</syntaxhighlight>
{{out}}
<pre>Unicode is supported on this terminal and U+25B3 is : △</pre>
=={{header|Elixir}}==
<
if ["LANG", "LC_CTYPE", "LC_ALL"]
|> Enum.map(&System.get_env/1)
Line 209:
raise "This terminal does not support Unicode."
end
</syntaxhighlight>
=={{header|FreeBASIC}}==
<
=={{header|FunL}}==
<
println( '\u25b3' )
else
println( 'Unicode not supported' )</
=={{header|Go}}==
{{works with|Ubuntu 16.04}}
<
import (
Line 237:
fmt.Println("This terminal does not support unicode")
}
}</
{{out}}
Line 245:
=={{header|Haskell}}==
<
import Data.List
import Data.Char
Line 255:
then putStrLn "UTF supported: \x25b3"
else putStrLn "UTF not supported"
</syntaxhighlight>
Output:
<pre>
Line 269:
"has_unicode_support" therefore cannot simply test whether one of the variables LC_ALL, LC_TYPE and LANG contains the string UTF.
<
def utf: if . == null then false else contains("UTF") or contains("utf") end;
env.LC_ALL
Line 283:
end ;
task</
{{Out}}
$ jq -M -r -n -f Terminal_control.jq
Line 294:
=={{header|Jsish}}==
Detection based on code from other entries, looking in LC_ALL, LC_CTYPE, LANG for hints of 'UTF'.
<
var utf = false;
Line 311:
△
=!EXPECTEND!=
*/</
{{out}}
Line 319:
=={{header|Julia}}==
{{works with|Linux}}
<syntaxhighlight lang="julia">
c = '\u25b3'
Line 327:
println("This output device does not support Unicode.")
end
</syntaxhighlight>
{{out}}
Line 336:
=={{header|Kotlin}}==
{{works with|Ubuntu|14.04}}
<
fun main(args: Array<String>) {
Line 344:
else
println("This terminal does not support unicode")
}</
{{out}}
Line 352:
=={{header|Lasso}}==
<
if(#env_vars >> regexp(`(LANG|LC_ALL|LC_CTYPE).*?UTF.*?###`)) => {
stdout('UTF supported \u25b3')
else
stdout('This terminal does not support UTF')
}</
<pre>UTF supported △
</pre>
Line 363:
=={{header|M2000 Interpreter}}==
M2000 Environment has own console (with graphics support)
<syntaxhighlight lang="m2000 interpreter">
Module CheckIt {
If IsWine then Font "DejaVu Sans"
Line 375:
}
Checkit
</syntaxhighlight>
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<
->田</
=={{header|Mercury}}==
<
:- interface.
Line 405:
else
io.write_string("Unicode is not supported on this terminal.\n", !IO)
).</
Output:
<pre>Unicode is supported on this terminal and U+25B3 is : △</pre>
Line 411:
=={{header|Nemerle}}==
Typically, on a windows system, the output encoding is '''not''' UTF-8, so in an actual application it would make more sense to set <tt>Console.OutputEncoding</tt> than to merely check it.
<
module UnicodeOut
Line 420:
else Write("Console encoding may not support Unicode characters.");
}
}</
=={{header|Nim}}==
<
if "utf" in getEnv("LANG").toLower:
echo "Unicode is supported on this terminal and U+25B3 is: △"
else:
echo "Unicode is not supported on this terminal."</
=={{header|Perl}}==
Much like Raku...
<
unless $ENV{LC_ALL} =~ /utf-8/i or $ENV{LC_CTYPE} =~ /utf-8/i or $ENV{LANG} =~ /utf-8/i;
print "△ \n";</
=={{header|Phix}}==
Line 441:
The following (grubby low-level details are hidden away in) builtins/unicode_console.e which is now included in the standard distribution:
<!--<
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">include</span> <span style="color: #000000;">builtins</span><span style="color: #0000FF;">\</span><span style="color: #000000;">cffi</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
Line 484:
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<!--</
Which can be used like this:
<!--<
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">include</span> <span style="color: #000000;">builtins</span><span style="color: #0000FF;">\</span><span style="color: #000000;">unicode_console</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
Line 498:
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"unicode is not supported\n"</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<!--</
Note that delta does not work on Windows (see talk page) but the others do, and all five work on linux and under pwa/p2js.
=={{header|PicoLisp}}==
<
(prinl (char (hex "25b3")))
(quit "UTF-8 capable terminal required") )</
=={{header|Python}}==
<
if "UTF-8" in sys.stdout.encoding:
print("△")
else:
raise Exception("Terminal can't handle UTF-8")</
=={{header|R}}==
<
cat("Unicode is supported on this terminal and U+25B3 is : \u25b3\n")
} else {
cat("Unicode is not supported on this terminal.")
}</
{{out}}
Line 525:
=={{header|Racket}}==
<
#lang racket
(displayln
Line 531:
(or (getenv "LC_ALL") (getenv "LC_CTYPE") (getenv "LANG")))
"\u25b3" "No Unicode detected."))
</syntaxhighlight>
=={{header|Raku}}==
(formerly Perl 6)
<syntaxhighlight lang="raku"
unless first(*.defined, %*ENV<LC_ALL LC_CTYPE LANG>) ~~ /:i 'utf-8'/;
say "△";</
{{out}}
<pre>△</pre>
=={{header|Ruby}}==
<
if ENV.values_at("LC_ALL","LC_CTYPE","LANG").compact.first.include?("UTF-8")
Line 549:
raise "Terminal can't handle UTF-8"
end
</syntaxhighlight>
=={{header|Scala}}==
Ad hoc in the REPL:
{{libheader|Scala}}<
Unicode is supported on this terminal and U+25B3 is : △</
=={{header|Seed7}}==
Line 562:
output file). STD_CONSOLE supports Unicode under Linux and Windows.
<
include "environment.s7i";
include "console.s7i";
Line 575:
writeln("Unicode is not supported on this terminal.");
end if;
end func;</
=={{header|Sidef}}==
<
say "△"
} else {
die "Terminal can't handle UTF-8.\n";
}</
=={{header|Tcl}}==
Tcl configures the standard output channel to use the system encoding by default. The system encoding is formally the encoding for use when communicating with the OS (e.g., for filenames) but is virtually always correlated with the default terminal encoding.<
if {[string match utf-* [encoding system]] || [string match *unicode* [encoding system]]} {
puts "\u25b3"
} else {
error "terminal does not support unicode (probably)"
}</
=={{header|UNIX Shell}}==
Line 599:
{{works with|Bourne Shell}}
<
# LC_ALL supersedes LC_CTYPE, which supersedes LANG.
# Set $1 to environment value.
Line 622:
echo "HW65001 This program requires a Unicode compatible terminal" >&2
exit 252 # Incompatible hardware
fi</
The terminal might support UTF-8, but its fonts might not have every Unicode character. Unless they have U+25B3, the output will not look correct. Greek letters like U+25B3 tend to be common, but some fonts might not have Chinese characters (for example), and almost no fonts have dead scripts such as Cuneiform.
Line 629:
{{trans|C}}
As there is currently no way to obtain this information via Wren CLI, we instead embed a Wren script in a C application and ask the host program to get it for us.
<
class C {
Line 639:
} else {
System.print("Unicode is not supported on this terminal.")
}</
<br>
We now embed this Wren script in the following C program, compile and run it.
<
#include <stdio.h>
#include <string.h>
Line 731:
free(script);
return 0;
}</
{{out}}
Line 740:
=={{header|zkl}}==
This code works for Unix/Linux, Windows XP cmd terminals don't support UTF-8.
<
.filter().filter("holds","UTF"))
println("This terminal supports UTF-8 (\U25B3;)");
else println("I have doubts about UTF-8 on this terminal.");</
{{out}}
<pre>
Line 751:
=={{header|ZX Spectrum Basic}}==
<
20 REM So we first define a custom character
30 FOR l=0 TO 7
Line 761:
9500 REM data for our custom delta
9510 DATA 0,0,8,20,34,65,127,0
</syntaxhighlight>
{{omit from|BASIC}}{{omit from|GUISS}}▼
{{omit from|Axe}}
{{omit from|GUISS}}
|