Kyl*_*yle 4 c linux unicode portability
我在C中编写一个将在终端中运行的应用程序,使用一些较少使用的unicode字符会很方便但不是必需的.从我的实验中,我没有遇到任何麻烦.但是,如果将来可能出现问题,我不会使用任何非ascii字符.
那么,简而言之,我可以依靠现代*nix世界中的任何终端或终端模拟器(主要是linux,freebsd和osx)来正确渲染任意utf-8字符吗?
如果我不能做出这样的假设,那么为特定目的定义了特定的unicode字符子集,那么至少可以在任何可能的现代*nix终端或终端仿真器中可靠地呈现某些这样的子集吗?
注意:当我说任意时,我的意思是任意的:任何unicode字符.但为了完整我的问题,我会注意到我主要对箭头和数学字符感兴趣,这个链接有两个列表:https://en.wikipedia.org/wiki/Unicode_symbols.
不,你不应该这么想.甚至在现代的系统中,所述一组字体的安装,由终端应用程序所使用的字体,和环境变量如LANG,LC_*等可影响是否某些字符可以被正确地显示在终端上或没有.
你也许能够使基础上的价值合理的猜测TERM,LANG以及LC_*环境变量来支持什么,但它仍然会是一个猜测.我建议要么根本不依赖它,要么提供一些启用/禁用使用的方法(通过环境变量和/或通过命令行标志到应用程序).