我在 rsync 期间遇到了一个非常顽固的错误的小问题。它是由文件名中带有特殊字符的文件引起的。还有其他的,但我可以通过对文件名的编码进行一些转换来解决这个问题。但是,我什至找不到这个文件。
所以这就是 rsync 所说的:
../.\#033OA.tex.pyD0MB" failed: No such file or directory (2)
Run Code Online (Sandbox Code Playgroud)
注意到的第一件事是字符代码不能是十六进制或八进制,所以我用谷歌搜索它并只找到了this。所以它可能是一个CURSOR UP字符(或不是)。我试过了
ls -la *`printf '\033OA'`*
Run Code Online (Sandbox Code Playgroud)
无济于事。我还尝试将该目录的 ls 输出管道化,od但无济于事。
我还可以做些什么?或者我到底在寻找什么角色?
谢谢
我使用 Notepad++ 在 Windows 中编写了一个 Bash 脚本。
cxStopAllServicesOnSERVER.sh
#!/usr/bin/bash
cd "/some/path"
echo "Hi. Logs can be found at "`pwd`"/cxStartStopLogger.log"
echo "["`date`"]*** STOPPING ALL SERVICES ON SERVER ***" >> "cxStartStopLogger.log"
exit
Run Code Online (Sandbox Code Playgroud)
现在上传并设置所需的文件权限后,我尝试按如下方式执行它:
bash-3.00$ cat cxStopAllServicesOnSERVER.sh #Let's have a look at the code.
#!/usr/bin/bash
cd "/some/path/"
echo "Hi. Logs can be found at "`pwd`"/cxStartStopLogger.log"
echo "["`date`"]*** STOPPING ALL SERVICES ON SERVER ***" >> "cxStartStopLogger.log"
bash-3.00$ # Code and hashbang 'looks' correct,
bash-3.00$ # if there is any issue with the format (EOL …Run Code Online (Sandbox Code Playgroud) 我有一个文本文件,它本身就是一个 ASCII 文件,但包含表示 utf-8 代码的八进制转义序列:
\350\207\252\345\212\250\346\216
Run Code Online (Sandbox Code Playgroud)
是否有一些程序或命令可以将此类 ASCII 文件转换为实际以 utf-8 编码的文本文件?
我曾经能够在我的控制台/终端中复制和粘贴(或在我加载相应的键盘布局时输入)任何类型的字符(例如 é ö ñ ß ? ?)。
现在我买了一台新电脑,它不再工作了,只有英文/ASCII 字符(但在其他程序中,例如 firefox,它仍然有效)。
发行版:Ubuntu。尝试过的终端:gnome-terminal、xterm、konsole。
我尝试将 /etc/environment 中的 LANG 设置为 en_US.UTF-8但重启后echo $LANG仍然给出C. 我还尝试在 gnome-terminal -menu 中设置Character encoding为- 没有效果。Unicode(UTF-8)Terminal
问题:我怎样才能得到一个能够处理非英文字符的终端?
我有一个 html 文件,在 URL 中有很多 % 编码的 UTF-8 文本。
例如“%D1%80%D0%B5%D1%81%D1%83%D1%80%D1%81%D1%8B”代表“???????” (俄语中的“资源”)。
任务是用可读的 UTF-8 文本替换所有此类子字符串。
为了简化任务,我们可以考虑%文件中没有其他符号用法。字母数字可以是大写也可以是小写。
我怀疑这可以用优雅来完成sed,perl,awk或东西,但不知道怎么办。
这个网络应用程序似乎可以通过粘贴在那里的文本来解决问题。
我已经安装tree在我的 ubuntu 盒子上,当我从 Putty 连接到它并启动时,tree我得到了这个:
$ tree
âââ html.vim -> xml.vim
âââ js.vim -> xml.vim
âââ xml.vim
Run Code Online (Sandbox Code Playgroud)
而不是这个:
$ tree --charset=ANSII
|-- html.vim -> xml.vim
|-- js.vim -> xml.vim
`-- xml.vim
Run Code Online (Sandbox Code Playgroud)
例如,当我从npm(package manager from nodejs)列出我的包时,我也会遇到这个问题
$ npm list
/home/monkey/scripts/chatter
âââ? express@3.0.6
â âââ buffer-crc32@0.1.1
â âââ commander@0.6.1
â âââ? connect@2.7.2
â â âââ bytes@0.1.0
Run Code Online (Sandbox Code Playgroud)
我该如何更改(从 Putty 或 linux box)?
我正要从它的源中区分备份以手动验证数据是否正确。一些字符,比如 åäö,在原始数据上没有正确显示,但是当客户端(通过 samba)正确解释它时,没有什么可担心的。从备份恢复的数据正确显示字符,导致差异不认为它们是相同的文件(有差异,而是完全不同的文件)。
md5 sums,相同的文件但不同的名称。
# md5sum /original/iStock_000003637083Large-barn*
e37c34968dd145a0e25692e1cb7fbdb1 /original/iStock_000003637083Large-barn p? strand.jpg
# md5sum /frombackup/iStock_000003637083Large-barn*
e37c34968dd145a0e25692e1cb7fbdb1 /frombackup/iStock_000003637083Large-barn på strand.jpg
Run Code Online (Sandbox Code Playgroud)
挂载选项和文件系统
/dev/sdb1 on /original type ext4 (rw,noatime,errors=remount-ro)
/dev/sdc1 on /frombackup type ext4 (rw)
Run Code Online (Sandbox Code Playgroud)
语言环境
LANG=sv_SE.UTF-8
LANGUAGE=
LC_CTYPE="sv_SE.UTF-8"
LC_NUMERIC="sv_SE.UTF-8"
LC_TIME="sv_SE.UTF-8"
LC_COLLATE="sv_SE.UTF-8"
LC_MONETARY="sv_SE.UTF-8"
LC_MESSAGES="sv_SE.UTF-8"
LC_PAPER="sv_SE.UTF-8"
LC_NAME="sv_SE.UTF-8"
LC_ADDRESS="sv_SE.UTF-8"
LC_TELEPHONE="sv_SE.UTF-8"
LC_MEASUREMENT="sv_SE.UTF-8"
LC_IDENTIFICATION="sv_SE.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
od -c
# ls "/original/iStock_000003637083Large-barn p? strand.jpg" | od -c
0000000 / v a r / w w w / m e d i a b a
0000020 n k e n …Run Code Online (Sandbox Code Playgroud) 我正在使用 Ubuntu14.04 连接到远程主机。
它的版本是:
Linux 版本 2.6.32-431.11.5.el6.yyyzzz.x86_64(gcc 版本 4.4.7 20120313(Red Hat 4.4.7-4)(GCC))#1 SMP Thu Jul 3 09:42:34 CST 2014
我在那台机器上上传的文件不能正确显示汉字。然后我打开一个文件,用 Ubuntu 随机输入汉字ibus input method。它显示:
~R~V?~K~B~I~W?~I~N~T??~T~E
Run Code Online (Sandbox Code Playgroud)
我在网上搜索并尝试了以下两种方法:
1:检查语言环境
It shows:
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)
好像没问题。
2:安装中文支持包
我做了:
yum install "@Chinese Support"
Run Code Online (Sandbox Code Playgroud)
它在那台机器上安装了 178M 文件。
之后,我打开另一个文件,并尝试用 ibus 输入一些中文。但是问题依然存在,如何解决呢?
update1 之后 我做了更多的研究。我发现有些字符可以正确输入(通过拼音输入法,ibus)。喜欢:
? ? ? ?
Run Code Online (Sandbox Code Playgroud)
它们都对应着它们的拼音。但是每个字符后面都有一个自动生成的空格(不是我输入的)。
如果我尝试输入 ??????? (它们与上述4个汉字的拼音相同)。我有:
?~P?~]~\ ~[? ~H?
Run Code Online (Sandbox Code Playgroud)
根据我的经验,如果代码转换完全搞砸了。当我输入拼音时,我会得到一些看起来像中文但实际上不是的有线字符,它们永远不会与我输入的拼音对应。
这一次,情况有点不同。我可以正确输入一些字符(带有系统生成的空格),而其他字符则无法辨认。
我有一台服务器,上面运行着 tmux 会话。让我们tmux_session在本文的其余部分中将该会话称为“会话”。
可以通过两种略有不同的方式来附加到该会话:
\n首先通过 ssh 连接到服务器:
\nuser@host$ ssh user@server.tld\nRun Code Online (Sandbox Code Playgroud)\n然后附加到指定的会话:
\nuser@server$ tmux a -d -t tmux_session\nRun Code Online (Sandbox Code Playgroud)\n通过 ssh-ing 并同时附加:
\nuser@host$ ssh user@server.tld -t tmux -a -d -t tmux_session\nRun Code Online (Sandbox Code Playgroud)\n方法 \xe2\x84\x961按预期工作。我的LANG设置为C.UTF-8, echo-ing 它在里面tmux_session工作正常,并且报告正确。像“\xc2\xb9\xc2\xb2\xc2\xb3\xc2\xa4”这样的字符的 Unicode 输入工作得很好。
方法 \xe2\x84\x962产生一个会话,该会话无法显示除简单 ASCII 之外的 Unicode 字符。所有其他字符均被替换为_(下划线)。但是,当输入特殊字符时,该字符实际上会输入到内部运行的任何应用程序中tmux_session,我使用编辑器、IRC 客户端等确认了它。当我使用方法 \xe2\x84\x961 分离并重新附加时,之前输入的字符显示正确。
使用方法 …
我正在为客户端调试应用程序,我从数据库中找到了可能是解决方案的信息。我要求客户端提取它,但不幸的是客户端向我发送了十六进制的原始数据......
我要求客户从数据库工具向我重新发送纯文本,但在等待他们的回应我正在寻找一个 bash 解决方案。
我知道编码的数据是 UTF-8 编码的字符串:有没有办法用 Unix 工具解码它?