我遇到了 Alt 代码的问题。我经常需要在文本中输入减号。我的公司使用 Excel、PowerPoint 和 Word 来交换文本。因此我需要能够在这三个程序中输入减号。
在http://www.fileformat.info/info/unicode/char/2212/index.htm查找代码并进行实验后,我发现了以下内容:
因此,Word 和 PowerPoint 的行为与记事本、Excel 和其他程序不同。
我想知道:为什么相同的方法在不同的微软程序中产生不同的结果,在Windows中是否有统一的方法来获取减号?
在 Windows 10 中cmd.exe,如果我这样做
tree
C:.
????a
? ????b
? ????etc...
Run Code Online (Sandbox Code Playgroud)
它清楚地在控制台上正确显示了 Unicode 条形和破折号。
但是如果我将此输出重定向到一个文件
tree > tree.txt
Run Code Online (Sandbox Code Playgroud)
该文件的内容是:
C:.
³ÄÄÄa
³ ÃÄÄÄb
³ ÀÄÄÄetc...
Run Code Online (Sandbox Code Playgroud)
它无法正确写入 Unicode 字符。
它甚至无法回读它所写的内容:
tree > tree.txt
type tree.txt
C:.
????a
? ????b
? ????etc...
Run Code Online (Sandbox Code Playgroud)
(它可能在此处显示为“?”(倾斜方块中的问号)但在控制台中它们显示为空框)
我已经尝试过这些建议而没有运气:
Run Code Online (Sandbox Code Playgroud)CMD /U /c tree > tree.txt
我错误地使用了这个命令,现在已修复,但我仍然得到与刚才相同的结果tree- 它在控制台中显示良好,但文件输出仍然是那些奇怪的字符。
奇怪的是,文本在控制台上显示得很好,但是写入文件会弄乱编码。这里可能是什么问题?
它可以显示,???但其他一些下标(如??)被转换为正方形。当我复制该方块并粘贴到此处时,问题就消失了:?。这是为什么?该文件以 UTF-8 编码。
仅供参考:Unicode 下标和上标
不久前,我在 SO 上问了这个问题,在那里我发现了如何组合字符以及如何在大多数编辑器和 Skype 上alt+777进行操作 ,它可以与前一个字符组合并最终生成如下单词:\xe2\x97\x8b\xcc\x89m\xe1\xbb\xa7t\xcc\x89\xe1\xba\xa3\xcc\x89\xcc\x89\xcc\x89t\xcc\x89\xe1\xba\xbbd\xcc\x89W\xcc\x89\xe1\xbb\x8f\xcc\x89r\xcc\x89\xcc\x89d\xcc\x89\xcc\x89
今天,我想再次生成它,但我在这台机器上没有 Skype(运行 Windows),并且我不想安装它只是为了将一个字符与该变音符号组合起来。
\n\n如何生成Unicode 代码点 777,以便它与前一个字符结合,而不是仅在 Windows 上呈现 \xe2\x97\x8b?
\n有史以来最愚蠢的问题:我如何用笔记本电脑键盘输入“正确的天花板”字符(http://www.fileformat.info/info/unicode/char/2309/index.htm)又名“?” ) 在带有 qwerty 笔记本电脑键盘的 Windows 登录密码框 ( http://www.fileformat.info/tip/microsoft/enter_unicode.htm ) 中?
“Alt +2309”没有给出任何一致的结果,我设法得到了印度字符、正方形,但从来没有我正在寻找的那个......(好吧,几秒钟前在谷歌浏览器地址栏中......?)
(重新编写问题以使其更有用)
我有一个批处理脚本,它将与命令行程序交互,获取它们的输出,然后根据该输出执行决策。
我需要与之交互的程序之一是一个相当老的程序,所以我被它的怪癖所困扰。当我将其输出通过管道传输到文本文件时,该文本文件采用 UTF-16 LE 编码。
我是这样做的:
program -parameter > resultat.txt
Run Code Online (Sandbox Code Playgroud)
在Windows 7下,这种编码对于cmd/批处理工作来说似乎很麻烦,因为你无法将这样的文本文件的内容读入变量。
这是一个示例(仅使用文本文件的第一行):
set /p Var=<resultat.txt
echo %Var%
cmd /k
Run Code Online (Sandbox Code Playgroud)
它只是没有任何回声,说“ECHO 已打开”。
另外,如果您使用“type”来打印文本文件的内容,则会出现奇怪的空格,表明它没有被正确处理。
尝试的解决方案 [1] - Powershell
经过研究,发现powershell可以转换txt编码,使用的方法如下:
Get-Content -Path "path\file.txt" | Out-File -FilePath "path\new_file.txt" -Encoding <encoding>
Run Code Online (Sandbox Code Playgroud)
使用 Notepad++,我做了一些研究,我需要获得什么编码?
UTF-8(无BOM),相当于记事本中的“ANSI”,是我需要的编码,将文本文件加载到变量中,并且“type”命令在使用此编码时都可以完美地工作。我怎么知道?如果我在记事本中打开管道文本文件,然后重新保存为“ANSI”编码,一切都会完美运行。
-Encoding ascii
Run Code Online (Sandbox Code Playgroud)
...这个选项应该有效,因为这会产生 UTF-8(无 BOM)结果,但它似乎无法处理 UTF-16 LE 源编码格式,并且不会产生可用的输出。当我在 Notepad++ 中打开生成的文件时,它将其识别为 UTF-16 LE“Unix”,这很奇怪。
有趣的是:如果我在记事本中将管道 txt 文件重新保存为“unicode”,则会生成一个 UTF-16 LE BOM 文件,该文件与上述转换参数一起生成完美的 UTF-8 文件。此时,我扩展了研究范围,提出了“如何将 BOM 添加到 UTF-16 LE 编码?”的问题。因为我可以将这些知识与 powershell 知识结合起来。然而,剧透警告:我没能找到一个像样的答案。
-Encoding utf8
Run Code Online (Sandbox Code Playgroud)
...是另一个类似的选项,但它会生成 UTF-8 BOM 文件(相当于在记事本中另存为“UTF-8”),这会产生损坏的输出。
总结一下:
我正在寻找一种命令行工具/方法(开放或专有,第一方或第三方),以便能够实现如下转换:
UTF-16 LE - …
当我打开一个包含一些 UTF-8 文本的文件时,字符显示为框。
我想我缺少一个字体,因为我可以安全地编辑这些框,并且当我在另一个文本编辑器(例如从终端中的 Vim 中)查看它们时,更改会正确显示。
同样在启动时 Emacs 打印出以下警告:
Warning: no fonts matching `-*-fixed-medium-r-normal-*-16-*-*-*-*-*-iso8859-1' available [2 times]
Run Code Online (Sandbox Code Playgroud)
我试过在我的系统上安装几个 X.org 字体包,但这似乎没有帮助。
使用 GNU Emacs 22.3
因为我有我的 mac,我一直看到这个奇怪的符号。直到今天,它只在 OpenOffice.org 中代替项目符号。第一张图片在 Windows 系统上创建的 .doc 文件中显示了这一点。
我什么都没想到——只是一个烦恼。无论字体如何,它都会出现。如果我删除文本并使用工具栏插入项目符号列表,则会出现真正的项目符号。
然后,今天我在 iTunes 中注意到了 - 这看起来很奇怪。
图3是角色的放大图。上面写着:私人使用 E000 F8FF。
它是什么(与 unicode 相关?),以及如何让项目符号正常工作?

编辑:情节变厚......如果我在安全模式下启动,这些符号看起来像你在电影中拍摄场景开始时的小快照板......
由于很快就会有希伯来语域名,我想知道主要浏览器是否已经内置了对此的支持,或者我们是否必须等待未来的版本才能访问我们最喜欢的希伯来语站点,例如 ???? ???????.com?
unicode ×10
windows ×4
fonts ×2
utf-8 ×2
windows-7 ×2
alt-code ×1
browser ×1
cmd.exe ×1
command-line ×1
diacritics ×1
domain-name ×1
emacs ×1
encoding ×1
gentoo ×1
keyboard ×1
mac ×1
macos ×1
notepad++ ×1
symbols ×1
text-editors ×1