在我的 Mac 终端上,打印 UTF-8 可以正常工作,但less不能正常工作。
所以这可以正常工作:
$ echo -e '\xe2\x82\xac'
€
Run Code Online (Sandbox Code Playgroud)
但是将其管道化为 less 给出了这样的东西:
$ echo -e '\xe2\x82\xac' | less
<E2><82><AC>
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
对于诊断:
我使用的是 Mac OS 10.6.8。少版本 418,终端 2.1.2 (273.1)。
我的语言环境的输出是这样的:
$ locale
LANG="en_US.UTF-8"
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL="C"
Run Code Online (Sandbox Code Playgroud) 这与这篇 Stack Overflow 帖子有关:
glob() 在 Windows 上找不到多字节字符的文件名?
我在使用 PHP 和 Windows 上具有多字节字符的文件时遇到问题。这是我的测试用例:
print_r(scandir('./uploads/'));
print_r(glob('./uploads/*'));
Run Code Online (Sandbox Code Playgroud)
远程 UNIX 服务器上的正确输出:
Array
(
[0] => .
[1] => ..
[2] => filename-äöü.jpg
[3] => filename.jpg
[4] => test?test.jpg
[5] => ??? ?????.jpg
[6] => ?????????.jpg
[7] => ???.jpg
)
Array
(
[0] => ./uploads/filename-äöü.jpg
[1] => ./uploads/filename.jpg
[2] => ./uploads/test?test.jpg
[3] => ./uploads/??? ?????.jpg
[4] => ./uploads/?????????.jpg
[5] => ./uploads/???.jpg
)
Run Code Online (Sandbox Code Playgroud)
Windows 本地输出不正确:
Array
(
[0] => .
[1] …Run Code Online (Sandbox Code Playgroud) 有没有办法在 Windows 上的 /etc/hosts 中添加非拉丁条目?
就像是
127.0.0.1 ?????????
Run Code Online (Sandbox Code Playgroud)
尝试了上面的代码,也没有运气的 punycode
是的,我知道这会破坏几乎所有应用程序并且不会通过任何验证。我只需要为一台机器完成这个。
我希望能够渲染此推文中所见的字符:

我保存了推文的 JSON 数据并编写了一个单行 Python 脚本进行测试。
python -c 'import json,urllib; print json.load(urllib.urlopen("http://c.sente.cc/BUCq/tweet.json"))["text"]'
Run Code Online (Sandbox Code Playgroud)
下图显示了此命令在两个不同的腻子会话中的输出,一个使用Bitstream Vera Sans Mono字体,另一个使用Courier New:

接下来是正确输出的示例(我没有使用 PuTTY):

原始 JSON 位于此链接,使用 Twitter 的 API。
如何让 PuTTY 显示这些字符?
在 UTF8 和非 UTF8 字符串出现一些问题后,我们正在对 UTF8 进行标准化。我需要做的一件事是检查 MySQL 数据库中的所有内容是否都在 UTF8 中?我需要检查什么?
我正在考虑将所有这些放在 nagios 插件中以检查所有内容是否都在 UTF8 中。建议?
我们将带有 unicode 亚洲字符的邮件发送到 WAN 另一端的邮件服务器......从运行 2.3(2) 的 FWSM 升级到运行 8.2(5) 的 ASA5550 后,我们看到包含 unicode 的邮件作业失败和其他编码为 Base64 的文本。
症状非常明显……使用 ASA 的数据包捕获实用程序,我们在流量离开 ASA 之前和之后捕获了流量……
access-list PCAP line 1 extended permit tcp any host 192.0.2.25 eq 25
capture pcap_inside type raw-data access-list PCAP buffer 1500000 packet-length 9216 interface inside
capture pcap_outside type raw-data access-list PCAP buffer 1500000 packet-length 9216 interface WAN
Run Code Online (Sandbox Code Playgroud)
我从网上下载的ASA通过pcaps去https://<fw_addr>/pcap_inside/pcap和https://<fw_addr>/pcap_outside/pcap...当我看着他们Wireshark的>按照TCP流,内部流量进入了ASA这个样子的
EHLO metabike
AUTH LOGIN
YzFwbUlciXNlck==
cZUplCVyXzRw
Run Code Online (Sandbox Code Playgroud)
但是在外部接口上离开 ASA 的相同邮件看起来像这样......
EHLO metabike
AUTH LOGIN
YzFwbUlciXNlck==
XXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)
XXXX 字符是关于...我通过禁用 …
我在 LDAP 上配置了一些用户,并希望他们能够使用 LDAP 目录上的这些用户和密码通过 SSH 连接到 Linux 机器。
但是,有两个问题我不知道如何处理:
ssh user@something@computer?谢谢!
我正在尝试使用 PowerShell 从字符串中去除奇数字符。我使用以下输出尝试自己学习:
get-help about_regular_expressions
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取一个主要是 ASCII 的字符串,但它有一个需要删除的异常字符。(注册商标符号;R 周围有一个圆圈。)我想从字符串中删除该字符的任何出现,保持其他所有内容完好无损。使用 PowerShell 2.0 完成此操作的最简洁的表达式是什么?
[编辑]
我做了一些进一步的挖掘,我相信问题源于我正在使用的 Import-CSV 调用。
当我将此符号从记事本中剪切并粘贴到 PS 提示符中,并将其分配给一个字符串时,我匹配得很好:
# This code yields 'True'
$string -match "\u00ae"
Run Code Online (Sandbox Code Playgroud)
但是,当我在其中一个字段包含特殊符号的 CSV 文件上使用 Import-CSV 时,我相信原始字节会以某种方式被转换,因为这样做是行不通的:
# This code yields 'False'
$source = Import-CSV -path testing.csv
# The following extracts the entry / line containing the special symbol that was
# copy-and-pasted above
$culprit = $source[5].COMMITTEE_NAME
$culprit -match "\u00ae"
Run Code Online (Sandbox Code Playgroud)
但是,以下确实有效:
# This yields True
$filedata = get-content testing.csv
$filedata[6] -match "\u00ae"
Run Code Online (Sandbox Code Playgroud)
所以我认为我对所有这些的后续问题是:
如何通过 import-csv …
我有几个运行 Samba 的 Linux 文件服务器,我需要做什么来支持带有 unicode 字符的文件名?
我希望获得适用于任何发行版的一般信息,但如果重要的话,假设系统的语言环境是 en_US.UTF-8 并且正在运行 Debian (Lenny) 或 Ubuntu (Hardy)。