Articles of 语言环境

如何检查一个语言环境是否是UTF-8?

我正在与Yocto合作为ARM设备(i.MX 6Quad Processors)创buildembedded式Linux发行版。 我已经用variablesconfiguration了所需语言环境的列表: IMAGE_LINGUAS = "de-de fr-fr en-gb en-gb.iso-8859-1 en-us en-us.iso-8859-1 zh-cn" 因此,我已经获得了包含以下文件夹的文件系统: root@lam_icu:/usr/lib/locale# cd /usr/share/locale/ root@lam_icu:/usr/share/locale# ls -la total 0 drwxr-xr-x 6 root root 416 Nov 17 2016 . drwxr-xr-x 30 root root 2056 Nov 17 2016 .. drwxr-xr-x 4 root root 296 Nov 17 2016 de drwxr-xr-x 3 root root 232 Nov […]

写入文件时的UnicodeEncodeError

我有一个python脚本,在我的本地机器(OS X)上效果很好,但是当我将它复制到服务器(Debian)时,它不能按预期工作。 该脚本读取一个xml文件并以新格式打印内容。 在我的本地机器上,我可以使用stdout将脚本运行到terminal或文件(即> myFile.txt ),两者都可以正常工作。 然而,在服务器上( ssh ),当我打印到terminal一切正常,但打印到文件(这是我真正需要)给UnicodeEncodeError: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 。 所有的文件都是utf-8编码,并且在魔术评论中声明了utf-8。 如果我在列表中打印str对象(这是我通常用来获取编码问题的一个技巧),它也会引发同样的错误。 如果使用print( x.encode('utf-8') ) ,那么它会打印代码样式的位(例如b'1' b'\xd0\x9a\xd0\xb0\xd0\xbc\xd0\xb0' ) 。 如果我在shell中$ export PYTHONIOENCODING=utf-8 (如某些SOpost中所build议的),那么我得到一个二进制文件: 1 <D0><9A><D0><B0><D0><BC><D0><B0> 。 我已经检查了所有的localevariables,并且相关的variables与我在本地机器上的variables相匹配。 我可以简单地在本地处理文件并上传,但我真的很想了解这里发生的事情。 由于Python代码在一台计算机上工作,我不确定它是相关的,但我在下面添加它: # -*- encoding: utf-8 -*- import sys, xml.etree.ElementTree as ET corpus = ET.parse('file.xml') […]

Locale.getDefault()总是返回en

unix机器上的服务器总是使用en作为默认语言环境。 以下是区域设置输出 LANG=en_US LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_ALL=C 我只是不明白,如果LANG设置正确,那么为什么服务器以en语言环境启动。

Linux / Python:编码用于打印的unicodestring

我有一个相当大的Python 2.6应用程序,大量的打印语句洒了。 我在整个使用Unicodestring,它通常很好。 但是,如果我redirect的应用程序的输出(如“myapp.py> output.txt”),那么我偶尔会得到这样的错误: UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position 0: ordinal not in range(128) 我想如果有人把LOCALE设置为ASCII,也会出现同样的问题。 现在,我完全理解这个错误的原因。 在我的Unicodestring中有不能用ASCII编码的字符。 很公平。 但是我希望我的python程序尽最大努力去打印可以理解的东西,可能是跳过可疑字符或用Unicode标识replace它们。 这个问题一定是常见的…处理这个问题的最佳做法是什么? 我更喜欢一个解决scheme,让我继续使用普通的“打印”,但我可以修改所有事件,如果有必要。 PS:我现在已经解决了这个问题。 解决scheme既不是给出的答案。 我使用了http://wiki.python.org/moin/PrintFails中给出的方法,由ChrisJ在其中一个注释中给出。 也就是说,我用一个包含正确参数的unicode编码的包装来replacesys.stdout。 工作得很好。

UNIXsorting忽略空格

这是一个简单的问题。 给定一个文件txt : ab ac aa 当调用sort txt ,我得到: aa ab ac 换句话说,这是不正确的sorting,这种删除/忽略空格! 我期望这是sort -i的行为,但它发生有或没有-i标志。 我想获得“正确的”sorting: aa ac ab 我该怎么做?

在Windows下使用任何语言环境的平日

我试图得到一周的一天,并在任何地区一直工作。 在与拉丁字母的地方,一切都很好。 Sys.getlocale() ## [1] "LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United Kingdom.1252;LC_MONETARY=English_United Kingdom.1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252" weekdays(Sys.Date()) ## [1] "Tuesday" 我有其他地区的两个相关的问题。 如果我设置 Sys.setlocale("LC_ALL", "Arabic_Qatar") ## [1] "LC_COLLATE=Arabic_Qatar.1256;LC_CTYPE=Arabic_Qatar.1256;LC_MONETARY=Arabic_Qatar.1256;LC_NUMERIC=C;LC_TIME=Arabic_Qatar.1256" 那么我有时(正确)得到 weekdays(Sys.Date()) ## [1] "الثلاثاء 有时得到 weekdays(Sys.Date()) ## [1] "ÇáËáÇËÇÁ" 取决于我的设置。 问题是,我无法弄清楚是什么导致了差异。 我认为这可能是与getOption("encoding") ,但我已经明确设置options(encoding = "native.enc")和options(encoding = "UTF-8") ,并没有什么区别。 我已经尝试了R的几个最新版本,并且所有这些问题都是一致的。 目前,在R GUI中string显示正确,但在使用IDE(Architect和RStudiotesting)时不正确。 我应该设置什么来确保工作日始终正确显示? 知道weekdays(Sys.Date())与format(as.POSIXlt(Sys.Date()), "%A")是等价的,它调用一个内部format.POSIXlt方法。 其次,改变所有的语言环境似乎是矫枉过正的。 我以为我应该能够设置时间选项。 但是,如果我设置了区域设置的单个组件,则weekdays返回一串问号。 for(category in c("LC_TIME", "LC_CTYPE", "LC_COLLATE", "LC_MONETARY")) […]

枚举Windows纸张大小

我可以使用当前的Locale纸张大小 GetLocaleStr(LCID,LOCALE_IPAPERSIZE,IntToStr(DMPAPER_A4)) 其中LOCALE_IPAPERSIZE = $100A 但有没有一种方法来枚举所有的纸张大小与他们的名字?

R,Rstudio控制台编码Windows

我有一种方法来改变Rstudio在Windows上的控制台编码? 这不是读取特定编码中的文件或采购脚本,而是关于更改控制台编码(编码Sys.getlocale产量)。 这通常不是一个大问题,但我尝试创build一个包,并在一些string和符号中使用德语变音符号。 roxygen2最适合UTF-8编码,但如果源文件不在控制台/系统编码中,则covr会发出错误。 (如果有对roxygen2和covr问题的解决方法,这也将有所帮助。添加信息:我从控制台调用covr::package_coverage ,并通过Rstudios Build命令调用roxygen2 。 和sessioninfo: sessionInfo() # R version 3.4.2 (2017-09-28) # Platform: x86_64-w64-mingw32/x64 (64-bit) # Running under: Windows >= 8 x64 (build 9200) # # Matrix products: default # # locale: # [1] LC_COLLATE=German_Austria.1252 LC_CTYPE=German_Austria.1252 LC_MONETARY=German_Austria.1252 LC_NUMERIC=C LC_TIME=German_Austria.1252 更新:通过Rstudio中的文件find产生错误的函数,使用devtools::load_all(".")加载,RStudio gui给出错误/错误的编码。

为什么不是QString :: localeAwareCompare()正常工作

一位芬兰客户告诉我,芬兰语的正确sorting(locale aware)是:az,å,ä,ö。 但是QString :: localeAwareCompare()在Windows Vista的Qt 4.4.2中将它返回为:a,ä,å,bo,ö,pz。 #include <qapplication.h> #include <qlocale.h> #include <iostream> #include <tchar.h> int main( int argc, char* argv[] ) { QLocale::setDefault ( QLocale( QLocale::Finnish ) ); QApplication app( argc, argv ); QString s1 = "a"; QString s2 = "ä"; QString s3 = "å"; QString s4 = "b"; QString s5 = "o"; QString […]

如何在Windows控制台中设置LOCALE

我需要为单个控制台设置区域设置。 我想构buildApache Wicket框架(基于Maven的构build),但它依靠en_US语言环境testing失败。 我不想跳过testing。 我不想跳过特定的失败testing。 可能吗? 或者正在改变系统范围的语言环境? 谢谢