标签: character-encoding

SSH 中不会显示外来字符

我在使用ssh远程服务器(我没有管理员访问权限)时遇到了一些问题- 具体来说,那里有几个包含韩语和西里尔文文本的文件夹。

当我用 显示父文件夹内容时ls,字符被转义为“?”。也许值得注意的是,韩文字符似乎比应该存在的字符数多得多。

我知道我使用的终端程序可以显示字符,因为使用sftp可以完美显示它们。我尝试过的所有终端都会出现问题。

机器概要

本地机器:

  • Linux 2.6.32-5-686, i686
  • Debian GNU/Linux 6.0.2(挤压)
  • 拥有管理员权限

远程服务器:

  • Linux 2.6.32-bpo.5-amd64、x86_64
  • Debian GNU/Linux 5.0.8 (lenny)
  • 没有管理员访问权限,也没有物理权限

我可能错过了一些其他重要的统计数据或一些信息,在这种情况下,我深表歉意。我对计算的整个非 Windows 方面还很陌生,所以我几乎不知道我在这里做什么。

ssh character-encoding

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

在当前语言环境中检索给定字符类中的字符列表的命令

有什么方法可以检索当前语言环境中给定字符类(如blank, alpha, digit...)中所有字符的列表。

例如,

LC_ALL=en_GB.UTF-8 that-command blank
Run Code Online (Sandbox Code Playgroud)

理想情况下,在我的 Debian 系统上,会显示如下内容:

      09 U+0009 HORIZONTAL TAB
      20 U+0020 SPACE
e1 9a 80 U+1680 OGHAM SPACE MARK
e1 a0 8e U+180E MONGOLIAN VOWEL SEPARATOR
e2 80 80 U+2000 EN QUAD
e2 80 81 U+2001 EM QUAD
e2 80 82 U+2002 EN SPACE
e2 80 83 U+2003 EM SPACE
e2 80 84 U+2004 THREE-PER-EM SPACE
e2 80 85 U+2005 FOUR-PER-EM SPACE
e2 80 86 U+2006 SIX-PER-EM SPACE
e2 80 88 …
Run Code Online (Sandbox Code Playgroud)

character-encoding locale

20
推荐指数
2
解决办法
1611
查看次数

不能在 UTF-8 中使用 `cut -c`(`--characters`)吗?

该命令cut有一个选项-c可以处理字符,而不是带有选项的字节-b。但这似乎不起作用,在en_US.UTF-8语言环境中:

第二个字节给出了第二个 ASCII 字符(在 UTF-8 中编码完全相同):

$ printf 'ABC' | cut -b 2          
B
Run Code Online (Sandbox Code Playgroud)

但不会在 UTF-8 语言环境中给出三个希腊非 ASCII 字符中的第二个:

$ printf '???' | cut -b 2         
?
Run Code Online (Sandbox Code Playgroud)

没关系 - 这是第二个字节
所以我们看第二个字符

$ printf '???' | cut -c 2 
?
Run Code Online (Sandbox Code Playgroud)

那看起来坏了。
通过一些实验,结果表明范围3-4显示了第二个字符:

$ printf '???' | cut -c 3-4
?
Run Code Online (Sandbox Code Playgroud)

但这与字节 3 到 4 相同:

$ printf '???' | cut -b 3-4
?
Run Code Online (Sandbox Code Playgroud)

所以-c不超过-b …

character-encoding text-processing cut unicode

19
推荐指数
3
解决办法
5083
查看次数

如何将 U+xxxxx 代码指定的表情符号转换为 utf-8?

表情符号似乎使用 U+xxxxx 格式指定,
其中每个 x 是一个十六进制数字。

例如,U+1F615是“困惑的脸”的官方 Unicode Consortium 代码

由于我经常感到困惑,我对这个符号有很强的亲和力。

U + 1F615表示是混淆我,因为我认为有可能为Unicode字符的唯一编码所需的8,16,24或32位,而5个十六进制数字需要5×4 = 20比特。

我发现这个符号在 bash 中似乎由一个完全不同的十六进制字符串表示:

$echo -n  | hexdump
0000000 f0 9f 98 95                                    
0000004

$echo -e "\xf0\x9f\x98\x95"


$PS1=$'\xf0\x9f\x98\x95  >'
  >
Run Code Online (Sandbox Code Playgroud)

我本来希望U+1F615转换为类似\x00 \x01 \xF6 \x15 的东西

我没有看到这两种编码之间的关系?

当我在官方 Unicode Consortium 列表中查找符号时,我希望能够直接使用该代码,而不必以这种繁琐的方式手动转换它。IE

  • 在某个网页上找到该符号
  • 将其复制到网络浏览器的剪贴板
  • 将其粘贴到 bash 中以通过十六进制转储回显以发现真正的代码。

我可以使用这个 20 位代码来确定 32 位代码是什么吗?

这两个数字之间是否存在关系?

shell character-encoding unicode

19
推荐指数
3
解决办法
7694
查看次数

ssh 和字符编码

当我ssh进入我的 VPS 时,我irssi在屏幕上运行。当有人发送 unicode 字符(例如 © 或 €)时,irssi当我在ssh会话中通过屏幕使用它时会显示垃圾。如果我irssi使用 irssi 的代理模块连接到它,从我本地计算机上运行的 irssi,它会正确显示。

同样,如果我在 VPS(屏幕外)上运行 ghci 并输入其中一个字符,它就会崩溃。

因此,显然,无论是在 ssh 还是系统设置中,我与 VPS 的连接都存在某种字符编码问题。

我怎样才能找出导致这种情况的原因并解决它?

细节:

客户系统

  • Arch Linux x64
  • UTF-8 编码

VPS系统

  • Ubuntu 服务器 10.04
  • 使用了未知编码。我怎么找到这个?(我只需要在我的 /etc/rc.conf 中查找 Arch)

ssh character-encoding locale

18
推荐指数
2
解决办法
5万
查看次数

为什么 {} 开始在 Terminal.app 中显示为 äå?

我正在运行 CentOS 7.9,今天我的终端显示奇怪的字符。有些字母看起来不错,但有些符号显示为一些非英文字符。例如,我制作了一个包含以下内容的文本文件:

!@#$%^&*()_+{}
Run Code Online (Sandbox Code Playgroud)

当我打开这个vi或者nano它看起来正如我上面写的是正确的。但在终端中它看起来像这样:

$ cat chars.txt 
!É#$%Ü&*()_+äå

$ od -An -vtx1 < chars.txt
 21 40 23 24 25 5e 26 2a 28 29 5f 2b 7b 7d 0a
Run Code Online (Sandbox Code Playgroud)

这些奇怪的字符随处可见,即使在我打字时也是如此。这台机器一直工作到今天。我认为这是在我下载了一个二进制文件curl并忘记使用该-O参数之后发生的。重新启动并以其他用户身份登录没有帮助。我的语言环境设置如下;我不知道还有什么要找的。我使用的 shell 是 Bash 4.2 版,没什么异常。

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

编辑:说服务器的外壳是 bash 4.2 会更准确。我在 macOS Big Sur 上使用 Terminal.app 登录。

terminal-emulator character-encoding centos macos

17
推荐指数
1
解决办法
1692
查看次数

终端:显示特殊字符

在某些程序中,如htop线条和框架显示不正确。相反,它们显示为-/

在此处输入图片说明

但在另一台机器上,它们正确显示为正确的行:

在此处输入图片说明

我不确定这是否是终端问题,或者是否需要某些软件包。

如果相关:我的系统是 Debian Wheezy,我的解释器是bash,我的终端模拟器是gnome-terminal

terminal character-encoding

16
推荐指数
2
解决办法
3万
查看次数

vim 可以只显示 ASCII 字符,而将其他字节视为二进制数据吗?

我已经知道vim -b,但是,根据所使用的语言环境,它将多字节字符(如 UTF-8)显示为单个字母。

vim无论字符集如何,我如何要求只显示 ASCII 可打印字符,并将其余字符视为二进制数据?

vim character-encoding ascii unicode binary

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

iconv 非法输入序列 - 为什么?

在尝试将文本文件转换为其 ASCII 等效文件时,我收到错误消息iconv: illegal input sequence at position.

我使用的命令是 iconv -f UTF-8 -t ascii//TRANSLIT file

冒犯的字符是æ

文本文件本身存在于此处

为什么说是非法序列?输入字符是正确的 UTF-8 字符 (U+00E6)。

character-encoding text-processing unicode

16
推荐指数
2
解决办法
6万
查看次数

为什么 wc -m 和 wc -c 不同?

作为一名 C 程序员,我惊讶地看到wc -c(计算字节数)和wc -m(计算字符数)对于我的一个长文本文件输出非常不同的结果。我一直被告知那sizeof(char)是 1 个字节。

qdii@nomada ~/Documents $ wc -c sentences.csv
102990983 sentences.csv
qdii@nomada ~/Documents $ wc -m sentences.csv
89023123 sentences.csv
Run Code Online (Sandbox Code Playgroud)

有什么解释吗?

character-encoding locale wc

15
推荐指数
2
解决办法
6006
查看次数