相关疑难解决方法(0)

我应该将我的语言环境设置为什么以及这样做的含义是什么?

这个问题是通过询问Chromium 浏览器不允许为“打印到文件”设置默认纸张大小的问题 以及在聊天中与@Gilles 进行对话而激发的。正如@don_crissti 所指出的,并经我证实,更改语言环境(至少LC_PAPER)会影响选择的纸张尺寸。

我从来没有想过要选择什么,而且总是选择,en_US.UTF-8因为这似乎是一个合理的默认选择。

但是,根据聊天中的@Gilles(请参阅从http://chat.stackexchange.com/transcript/message/17017095#17017095开始的对话)。摘录:

吉尔斯:LC_PAPER 默认为 $LANG

吉尔斯:你必须有 LANG=en_US.UTF-8。这是一个坏主意:它设置了 LC_COLLATE 而这几乎总是一件坏事

Gilles:LC_COLLATE 没有描述正确的排序规则,它太严格了(它逐个字符)删除 LANG 而是设置 LC_CTYPE 和 LC_PAPER

Gilles:加上 LC_MESSAGES 如果你想要非英语的消息

显然,这里有一些我不知道的问题,我相信还有很多其他问题。那么,在设置语言环境时应该考虑哪些问题,又应该如何设置呢?我一直只是dpkg-reconfigure locales在 Debian 中运行,并没有三思而后行。

具体问题:我应该将语言环境设置为 en_IN.UTF-8 吗?这样做有什么缺点吗?

另请参阅:LC_COLLATE 是否(应该)影响字符范围?

locale

23
推荐指数
1
解决办法
1万
查看次数

我应该使用 LANG 的什么值来“sort -u”正确处理中文字符?

    \n
  • 上下文
  • \n
  • 发现问题\n
      \n
    • 问题编号 1
    • \n
    • 问题编号 2
    • \n
    • 问题编号 3
    • \n
    \n
  • \n
  • 问题
  • \n
\n

\n

上下文

\n

今天,我想保留包含汉字的文件中的唯一行。我决定使用该sort实用程序,因为我熟悉该工具,并且删除文件中的重复行就像使用该-u标志一样简单。我了解到我需要更改区域设置才能sort正确使用中文字符。我注意到使用不同的区域设置会sort产生不同的行为。在这篇文章中,我展示了我的发现。

\n

我知道删除文件中重复行的任务可以使用多种工具/编程语言来完成。虽然我感谢任何建议完成该任务的工具的人,但我更感兴趣的是了解有关语言环境的更多信息以及它们如何影响 Unix 实用程序。

\n

\n

发现了问题

\n

\n

问题编号 1

\n

以下是我的系统的区域设置。

\n
locale\n
Run Code Online (Sandbox Code Playgroud)\n
LANG=en_US.UTF-8\nLC_CTYPE="en_US.UTF-8"\nLC_NUMERIC="en_US.UTF-8"\nLC_TIME="en_US.UTF-8"\nLC_COLLATE="en_US.UTF-8"\nLC_MONETARY="en_US.UTF-8"\nLC_MESSAGES="en_US.UTF-8"\nLC_PAPER="en_US.UTF-8"\nLC_NAME="en_US.UTF-8"\nLC_ADDRESS="en_US.UTF-8"\nLC_TELEPHONE="en_US.UTF-8"\nLC_MEASUREMENT="en_US.UTF-8"\nLC_IDENTIFICATION="en_US.UTF-8"\nLC_ALL=\n
Run Code Online (Sandbox Code Playgroud)\n

考虑以下名为main.txt

\n
\xe4\x94\x8d\n\xe4\x8f\x9d\n
Run Code Online (Sandbox Code Playgroud)\n

en_US.UTF-8如果我尝试使用作为我的排序$LANG对其进行排序。我失去了行号。2

\n
sort -u main.txt\n
Run Code Online (Sandbox Code Playgroud)\n
\xe4\x94\x8d\n
Run Code Online (Sandbox Code Playgroud)\n

LANG我已经通过设置解决了这个问题zh_CN.UTF-8

\n
export LANG=zh_CN.UTF-8\nsort -u main.txt\n
Run Code Online (Sandbox Code Playgroud)\n
\xe4\x94\x8d\n\xe4\x8f\x9d\n
Run Code Online (Sandbox Code Playgroud)\n

我在 Stack Overflow …

sort unicode locale

10
推荐指数
1
解决办法
585
查看次数

为什么 uniq 忽略 Unicode 和带有单个字母的行?

我试图将美国和英国词典合并成一个大词典,并且我试图从超集中删除所有重复项,但似乎 uniq 没有输出诸如“épée”或单个字母之类的词。

这是我尝试使用的:

LC_COLLATE=en_US.UTF-8 cat american-english british-english |sort|uniq -u > unique_sorted_combined_dict
Run Code Online (Sandbox Code Playgroud)

如果我只是这样做:

LC_COLLATE=en_US.UTF-8 cat american-english british-english |sort > sorted_combined_dict
Run Code Online (Sandbox Code Playgroud)

“épée”和其他这样的词确实出现了,以及单个字母。

有什么我在这里想念的uniq吗?

我应该注意到我在 Ubuntu 12.10 上使用来自 GNU coreutils 的 uniq,如果这有什么不同的话。

text-processing sort unicode locale uniq

6
推荐指数
1
解决办法
1536
查看次数

标签 统计

locale ×3

sort ×2

unicode ×2

text-processing ×1

uniq ×1