我正在学习 UTF-8 标准,这就是我正在学习的内容:
Definition and bytes used
UTF-8 binary representation Meaning
0xxxxxxx 1 byte for 1 to 7 bits chars
110xxxxx 10xxxxxx 2 bytes for 8 to 11 bits chars
1110xxxx 10xxxxxx 10xxxxxx 3 bytes for 12 to 16 bits chars
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 4 bytes for 17 to 21 bits chars
Run Code Online (Sandbox Code Playgroud)
我想知道,为什么10xxxxxx不是2 字节的 UTF-8 代码,而是使用 4 字节的 UTF-8 代码获得 1 位到 22 位?现在的情况是,丢失了 64 个可能的值(从1000000到10111111)。我不是要争论标准,但我想知道为什么会这样?
**编辑**
甚至,为什么不是
UTF-8 binary representation …Run Code Online (Sandbox Code Playgroud) 我正在使用 Notepad++ 来编辑我的 PHP 脚本。
但是,我发现了一个奇怪的问题:当将编码从 更改ANSI为UTF-8 (without BOM)、保存、关闭、重新加载时——然后检查编码:仍然是ANSI。
任何想法有什么问题?过去它总是对我有用。
我在我的一个冗长的 shell 脚本中使用 GNU 对话框。我遇到的问题之一是当我要求一个输入框时,用户可以在其中输入一本书的标题(主要是法语)。
\n\n在此输入框中,输入重音字符(\xc3\xa9\xc3\xa0\xc3\xa8 在法语中很常见)或特殊的 UTF-8 字符(例如破折号“\xe2\x80\x94”)会移动光标右边有 4 个字符,而不是 1 个。在 3 或 4 个“特殊”字符之后,输入框由于此工件而完全无法使用。
\n\n同样,当我显示带有对话框的菜单时,重音字符会移动对话框的右边框。这比输入框中的障碍要小,但视觉上却很不舒服。
\n\n我已经尝试了各种方法来使其正常工作,但无济于事。
\n\n作为记录,这是我的 LC_* 环境变量:
\n\nLC_PAPER=fr_FR.UTF-8\nLC_ADDRESS=fr_FR.UTF-8\nLC_MONETARY=fr_FR.UTF-8\nLC_NUMERIC=fr_FR.UTF-8\nLC_ALL=fr_FR.UTF-8\nLC_TELEPHONE=fr_FR.UTF-8\nLC_MESSAGES=fr_FR.UTF-8\nLC_IDENTIFICATION=fr_FR.UTF-8\nLC_COLLATE=fr_FR.UTF-8\nLC_MEASUREMENT=fr_FR.UTF-8\nLC_CTYPE=fr_FR.UTF-8\nLC_TIME=fr_FR.UTF-8\nLC_NAME=fr_FR.UTF-8\nLANG=fr_FR.UTF-8\nRun Code Online (Sandbox Code Playgroud)\n\n我能做什么?
\n\n(编辑:如下所述,我使用的是 Mac,无论我使用 iTerm2 还是内置终端模拟器,都会出现同样的问题。)
\n我对 WinMerge 有问题(或更具体地说:WinMergeU)。我有几个 php 文件,它们具有与所选编码相同的内容。如何告诉 WinMerge 忽略编码?如果这是不可能的:是否有替代方法可以忽略编码?
我在 Fedora 17 i686 上使用带有 konsole 的 tmux 1.6。
我有一个 azerty 键盘(带有重音字符),我想绑定 'ù' 键。
我做了以下 ~/.tmux.conf:
setw -g utf8 on
bind-key ù split-window -h
Run Code Online (Sandbox Code Playgroud)
但是,当我运行 tmux 时,出现以下错误:
/home/glines/.tmux.conf: 2: unknown key: ù
Run Code Online (Sandbox Code Playgroud)
有没有办法绑定这个键?
对于您的帮助,提前致谢。
我公司的许多代理收到的电子邮件仍然包含 Barracuda(垃圾邮件防火墙)标头(即使在“消息”视图中,而不是“源”视图中)并且以 Base64 编码。
他们大部分是从海外发送的,所以有可能是地区冲突吗?IE。如果有一个亚洲字符被发送,首先需要 Base64 编码。
我们的邮件服务器是 SmarterMail Enterprise 14.5 和 Intermedia Exchange, Barracuda Firmware v7.1.1.003 (2015-09-28 16:36:19)
示例: 并排比较用户在 Barracuda 中看到的内容和图像来源。
所以大部分标题仍然对用户隐藏,但电子邮件仍然不应该像这样显示。
我怀疑导致问题的原因如下:
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Run Code Online (Sandbox Code Playgroud)
这是一个语言环境/编码问题,让我们的垃圾邮件防火墙感到困惑吗?
当我在Visual Studio Code中打开一个文本文件时,\n该文本包含很多我原本希望看到的问号\n瑞典字母,例如 \xc3\xa5、\xc3\xa4、\xc3\xb6 :
\n\n^ 点击放大
\n在右侧(在VS Code的状态栏中),我注意到\nit 写着UTF-8。
\n这是否与我面临的问题有关?
我怎样才能让所有这些字母正确显示?
\n顺便说一句,当我在普通的旧Windows 记事本中打开同一文件时,文本显示正确:
\n\n在这种情况下,状态栏右下角显示的是 ANSI ,而不是 UTF-8。\n
\n但在 VS Code 中,即使我单击UTF-8,然后单击\n Reopen with Encoding,我也找不到任何名为 ANSI 的编码。
\n\n如果您想使用我一直在使用的确切文件重现该行为,这里是.
\n我们有一个文本文件,它是默认的 ANSI 格式,需要转换成 UTF-8 格式。有什么办法可以使用一般的windows DOS命令来转换文件吗?我们可以使用 PowerShell,但只有这个命令行必须从不同的批处理中运行。
我登录到 Mac,运行终端,通过 ssh 连接到 Linux 系统并make在 emacs 窗口中运行。我的错误日志如下所示:
_raw.cpp:139: error: invalid conversion from âconst char*â to âsize_tâ
_raw.cpp:139: error: initializing argument 2 of âint snprintf(char*, size_t, const char*, ...)â
_raw.cpp:139: error: invalid conversion from âintâ to âconst char*â
_raw.cpp:139: error: initializing argument 3 of âint snprintf(char*, size_t, const char*, ...)â
Run Code Online (Sandbox Code Playgroud)
请注意,显然 GCC 正在尝试使用 unicode smartquote 字符,但它们以 UTF-8 格式发送,而 Emacs 正在拦截它们。我认为这里的问题是 EMACS 需要将子进程生成的 UTF-8 传递到终端。知道如何做到这一点吗?
我有一个名为 æøå.js 的文件(只是一个示例),当我ls在存储它的目录中运行时,我得到
root@chu:~/projects/someproject/server# ls src a.js b.js ??????.js
所以看起来这样的符号不能显示。PuTTY 设置为期望 UTF-8,我env看起来像这样
术语=xterm 外壳=/bin/bash 用户=root LANG=en_GB.UTF-8 SHLVL=1 家=/root LANGUAGE=en_US:en LS_OPTIONS=--颜色=自动 PYTHONPATH=:/root/pymodules 日志名=根 _=/usr/bin/env
(我已经从输出中删除了一些东西,因为它们无论如何都不可能相关)
但事情是这样的;当我打开一个文件时,vim我可以毫无问题地输入并查看所有这些符号。所以问题显然只是在 shell/bash 中。我可以提供任何允许 bash 显示这些符号的设置吗?有人也可以解释为什么它现在不能使用 UTF-8 吗?
编辑:这是treeæøå.js 的显示方式
|-- 源代码 | |-- a.js | |-- b.js | `-- \303\246\303\270\303\245.js