我刚刚意识到我的系统上有一个文件;它通常列出:
$ ls -la T?S?ER.txt
-rw-r--r-- 1 user user 8 2013-04-11 18:07 T?S?ER.txt
$ cat T?S?ER.txt
testing
Run Code Online (Sandbox Code Playgroud)
...然而,它使一个软件崩溃,并出现与 UTF-8/Unicode 相关的错误。我真的很困惑,因为我不知道为什么这样的文件有问题;最后我记得检查lswith的输出hexdump:
$ ls T?S?ER.txt
T?S?ER.txt
$ ls T?S?ER.txt | hexdump -C
00000000 54 ce 95 53 d0 a2 45 52 2e 74 78 74 0a |T..S..ER.txt.|
0000000d
Run Code Online (Sandbox Code Playgroud)
...嗯,显然有一些字节之间/而不是一些字母,所以我猜这是一个 Unicode 编码问题。我可以尝试回显字节以查看打印的内容:
$ echo -e "\x54\xCE\x95\x53\xD0\xA2\x45\x52\x2E\x74\x78\x74"
T?S?ER.txt
Run Code Online (Sandbox Code Playgroud)
...但我仍然无法分辨这些是哪些 - 如果有 - Unicode 字符。
那么是否有一个命令行工具,我可以在终端上检查一个字符串,并获取有关它的字符的 Unicode 信息?
我已经断断续续地使用 GNU SED 几年了。有时它让我感到有些困惑,但它做得很好......对于单字节字符集!
我时不时地注意到对 GNU SED 的引用是 Unicode 感知的,但我见过的最接近的是它的“二进制”模式……而二进制不是 Unicode。
GSED 能否以 CodePoint 分辨率处理 Unicode 文本文件,包括尤其是 \r\n (Windows)...如果可以,它是否需要 UTF-8、UTF-16 或什么?SED 如何检测编码?
如何让 GVim(Windows XP 上的 7.3 版,如果重要的话)显示 Unicode 字符?类似的东西
http://vimcasts.org/episodes/show-invisibles/ (搜索listchars以查看我想要获得的小三角形)。
我正在使用
set encoding,
set fileencoding,
and set fileencodings,
Run Code Online (Sandbox Code Playgroud)
全部到 utf-8,如果有帮助的话。
我知道这一定很简单,但尽管如此,我还是被卡住了。帮助。
有时我想输入 Unicode 字符,例如右箭头 (?)。
目前,我知道的唯一方法是使用Unicode 输入应用程序,但它与 Windows 字符映射实用程序一样麻烦。
如何直接通过键盘输入 Unicode 字符?
请在回复之前阅读整条消息。
首先,我知道如何临时解决这个问题。我正在寻找永久修复。我经常处理外语文件。
不幸的是,有时 Windows 资源管理器、记事本和其他地方(由 Windows 呈现,可能是 GDI)中的所有 unicode 字符无法正确显示。它们显示为矩形块,之前它们一直正确显示。有无数方法可以暂时纠正这个问题。
但同样,我想要一种永久解决问题的方法。
我尝试过的:
我没有尝试过的:
我不会做的事情:
那么任何人都可以推荐一个永久修复这个问题的方法吗?
我最近从 Ubuntu Desktop 13.04 迁移到 Ubuntu Server 13.10,现在我的文件系统似乎不支持 unicode 字符。我使用 rsync 来备份/同步文件,它显示了正确的字符,但它想删除不匹配的文件名并创建一个转义版本。
例如:
root@ubuntu-server:~# rsync -avh --progress --delete --dry-run --exclude \$RECYCLE.BIN /media/source/ /media/target/
deleting Tiësto - Ten Seconds Before Sunrise.mp3
Ti\#353sto - Ten Seconds Before Sunrise.mp3
Run Code Online (Sandbox Code Playgroud)
另外,如果我将 unicode 文件复制到文件系统,它会显示为:
drwxr-xr-x 3 root root 4096 Jan 21 2013 DJ Ti?sto/
Run Code Online (Sandbox Code Playgroud)
我尝试通过安装 unicode 库,apt-get install unicode但这似乎没有解决问题。
更新:现在这可能是内核问题。我正在复制 samba/cifs 并尝试通过指定 utf8 字符集,mount -t cifs //192.xxx.xxx.xxx/source/ /media/target/ -o iocharset=utf8但这会产生错误...
mount error(79): Can not access a needed shared library
Refer to …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个有点像overset在 LaTeX中工作的加入角色。它也有点像许多组合 Unicode characters,但我希望它适用于任何字母。例如,我想在 e 上加上一个小写字母 A。
我能找到的最好的是这个名为Combining Diacritical Marks Supplement 的深奥 Unicode 块,但这并没有定义字母表中的每个字母。
是否没有将一个符号放在另一个符号上的连接字符?
有几个 Unicode 字符我只是将其视为框。这只发生在 Chrome 中。字符编码设置为 UTF-8,但自动检测没有帮助。
示例: [?]
您只会看到两个方括号,但实际上中间有 Unicode Character World Joiner。这是一个零宽度的不间断空间。
我还整理了一个小jsfiddle 演示。我看不到World Joiner角色,但我可以看到Hair Space。(看到它实际上意味着我没有看到它。你明白吗?)
当人们发布一些新风格的表情符号等时,也会发生这种情况。
我怎样才能解决这个问题?
更新:
这种情况随处可见(推特、脸书等等)。我没有使用特殊字体或更改了系统(Windows 7、64 位)上与字体相关的内容。假设这应该有效,我错了吗?
更新 2:
这让我发疯。还有很多字符没有显示。
示例(包装礼物):

如您所见,Chrome 默认不显示字符。只有当我明确地将字体设置为 Segoe UI Symbol 时,它才会这样做。为什么 Chrome 没有自动使用该字体作为后备?
如何让 Chrome 识别 Segoe UI Symbol 字体?
看,我刚刚发现了一些同时让我印象深刻和困惑的事情。有一个奇怪的字符,它允许您在默认情况下反向输入所有内容。例如,如果我输入:
"Something like this"
Run Code Online (Sandbox Code Playgroud)
然后就会变成:
?"Something like this"
Run Code Online (Sandbox Code Playgroud)
(因为我不必自己颠倒这句话,如果你明白我的意思的话)。
看起来我在欺骗你,但我不是。为确保您明白我想说的内容,我会将特殊字符粘贴到单独的(代码)行中。
?
Run Code Online (Sandbox Code Playgroud)
现在尝试复制它,将其粘贴到文本框中的其他位置并开始输入。你会看到一些非常奇怪的事情发生。
问题是:这个疯狂的隐形角色的名字是什么,它迫使所有东西都用从右到左的语言输入?
我希望你明白我的意思。
unicode ×10
encoding ×2
fonts ×2
bash ×1
code-blocks ×1
command-line ×1
display ×1
filesystems ×1
gnu ×1
gvim ×1
language ×1
linux ×1
rsync ×1
sed ×1
utf-8 ×1
windows ×1
windows-7 ×1
windows-xp ×1