当我在Windows中打开cmd.exe时,它使用的是什么编码?
如何查看当前使用的编码?它取决于我的区域设置还是有任何环境变量需要检查?
键入具有特定编码的文件时会发生什么?有时我会收到乱码(使用的编码不正确),有时候它会有所作为.但是,只要我不知道发生了什么,我就不相信任何事情.谁能解释一下?
嗨,我试图将unicode字符串输出到带有iostreams的控制台并失败.
我发现了这一点: 在c ++控制台应用程序中使用unicode字体 ,这个代码片段有效.
SetConsoleOutputCP(CP_UTF8);
wchar_t s[] = L"èéøÞ????æ?a";
int bufferSize = WideCharToMultiByte(CP_UTF8, 0, s, -1, NULL, 0, NULL, NULL);
char* m = new char[bufferSize];
WideCharToMultiByte(CP_UTF8, 0, s, -1, m, bufferSize, NULL, NULL);
wprintf(L"%S", m);
Run Code Online (Sandbox Code Playgroud)
但是,我没有找到任何方法来使用iostream正确输出unicode.有什么建议?
这不起作用:
SetConsoleOutputCP(CP_UTF8);
utf8_locale = locale(old_locale,new boost::program_options::detail::utf8_codecvt_facet());
wcout.imbue(utf8_locale);
wcout << L"¡Hola!" << endl;
Run Code Online (Sandbox Code Playgroud)
编辑 我找不到任何其他解决方案,而不是在流中包装此片段.希望,有人有更好的想法.
//Unicode output for a Windows console
ostream &operator-(ostream &stream, const wchar_t *s)
{
int bufSize = WideCharToMultiByte(CP_UTF8, 0, s, -1, NULL, 0, NULL, NULL);
char *buf = …Run Code Online (Sandbox Code Playgroud) 如何git log在Windows命令提示符下正确显示命令输出?
正如你所看到的,我可以正确输入变音字符,但git log输出却以某种方式被转义.根据UTF-8编码表,来自输出的成角度括号(<和>)之间的代码对应于先前键入的git config参数.
我曾试图设置LESSCHARSET环境变量,utf-8如sugested的答案类似的问题之一,但随后的输出是乱码:
我知道.git/config编码正确,utf-8因为它gitk按预期处理.
locale如有必要,这是命令输出
LANG=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)
在纯git-bash中输出也是一样的:
所以我认为问题是shell独立的,并且与Git或其配置本身有关.
默认安装在Windows'cmd.exe中的866字符集与光荣的Unicode相比很差且不方便.
我可以默认安装Unicode或将cmd.exe替换为另一个控制台并使其默认,以便程序使用它而不是cmd.exe吗?
据我所知,chcp 65001仅在正在运行的控制台中更改编码.我想在系统级别更改charset.
我想创建一个.bat文件,打开时将文件夹及其包含的文件复制到另一个分区的另一个文件夹中.这正是我想要做的:
复制C:\Documents and Settings\user\Desktop\?????????及其包含的全部内容D:\Backup.我试过很多xcopy命令,但没有结果.谢谢.
我启动了命令提示符/k并看到了这个
这让我觉得字体有问题.我安装了应修复此问题的新字体(YGP_NT)但是我遇到了同样的问题(是的,我从cmd属性更改了它,用regedit编辑了TrueTypeFont并重新启动了PC).如果可以帮助的话,我可以在cmd中用西里尔语写.
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="conn.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)
上面的代码是对的吗?
我试图在win7 cmd中显示UTF-8.目前,我正在使用标准字体,因为正如我在mysql.exe中看到的,它与我正在使用的字符(目前是德语变音符号"ßäöüÄÖÜ")一起工作正常.此外,使用其他字体时,会出现相同的字符.
但我的PHP脚本的输出显示垃圾,例如'ß'为'ß'.当我将输出传输到一个文件并用Notepad ++打开它时,它说编码是UTF-8.在php.ini中,我将UTF-8设置为编码以及连接到mySQL数据库,并将数据库本身设置为UTF-8.
在CMD中,我尝试将代码页设置为65001,但没有任何变化.
编辑:我的PHP脚本也保存为UTF-8
看来latin1,我想要的字符也可以显示,实际上它可以工作.但是必须有一种方法可以用UTF-8做到这一点吗?我无法将所有内容转换为latin1
虽然Powershell几乎不可能实现,但我想要实现的目标却相当简单.
我想显示文件的完整路径,其中一些文件的名称中包含阿拉伯语,中文,日语和俄语字符
在控制台中看到的输出正在被另一个脚本消耗.输出包含?而不是实际的人物.
执行的命令是
(Get-ChildItem -Recurse -Path "D:\test" -Include *unicode* | Get-ChildItem -Recurse).FullName
Run Code Online (Sandbox Code Playgroud)
是否有任何简单的方法来启动PowerShell(通过命令行或以任何方式写入脚本),以便正确地看到输出.
PS我在Stack Overflow上经历了很多类似的问题,但除了称之为Windows控制台子系统问题之外,它们都没有太多的输入.
快乐的例子:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
czech = u'Leoš Janá?ek'.encode("utf-8")
print(czech)
pl = u'Zdzis?aw Beksi?ski'.encode("utf-8")
print(pl)
jp = u'??? ?? ??'.encode("utf-8")
print(jp)
chinese = u'??'.encode("utf-8")
print(chinese)
MIR = u'?????? ??? ?????????? ????????'.encode("utf-8")
print(MIR)
pt = u'Minha Língua Portuguesa: çáà'.encode("utf-8")
print(pt)
Run Code Online (Sandbox Code Playgroud)
不愉快的输出:
b'Leo\xc5\xa1 Jan\xc3\xa1\xc4\x8dek'
b'Zdzis\xc5\x82aw Beksi\xc5\x84ski'
b'\xe3\x83\xaa\xe3\x83\xb3\xe3\x82\xb0 \xe5\xb1\xb1\xe6\x9d\x91 \xe8\xb2\x9e\xe5\xad\x90'
b'\xe4\xba\x94\xe8\xa1\x8c'
b'\xd0\x9c\xd0\xb0\xd1\x88\xd0\xb8\xd0\xbd\xd0\xb0 \xd0\xb4\xd0\xbb\xd1\x8f \xd0\x98\xd0\xbd\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb5\xd1\x80\xd0\xbd\xd1\x8b\xd1\x85 \xd0\xa0\xd0\xb0\xd1\x81\xd1\x87\xd1\x91\xd1\x82\xd0\xbe\xd0\xb2'
b'Minha L\xc3\xadngua Portuguesa: \xc3\xa7\xc3\xa1\xc3\xa0'
Run Code Online (Sandbox Code Playgroud)
如果我像这样打印它们:
jp = u'??? ?? ??'
print(jp)
Run Code Online (Sandbox Code Playgroud)
我明白了:
Traceback (most recent call last):
File "x.py", line 5, in <module>
print(jp)
File …Run Code Online (Sandbox Code Playgroud) 我还在学习C++,所以忍受我和我的草率代码.我使用的编译器是Dev C++.我希望能够使用cout将Unicode字符输出到控制台.当我尝试这样的事情时:
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
std::cout << "Blah blah blah some gibberish unicode: ??ß??\n";
system("PAUSE");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它会向控制台输出奇怪的字符,例如μA■Gg.为什么会这样做,我怎样才能展示ĐĄßĞĝ?或者Windows无法实现这一点?
unicode ×6
windows ×4
cmd ×3
c++ ×2
console ×2
encoding ×2
utf-8 ×2
asp-classic ×1
batch-file ×1
codepages ×1
command-line ×1
git ×1
iostream ×1
locale ×1
powershell ×1
python ×1
terminal ×1
windows-xp ×1