我试图通过使用System.Diagnostics.Process在测试中运行它来捕获控制台应用程序的输出.我遇到字符编码问题."£"在测试中显示为"œ",但是当我运行控制台应用程序时,它正确显示为"£".
如果我设置Console.Out.Encoding = Encoding.Default,它在测试中有效,但在正常运行时无法正常显示.
这里发生了什么,我该如何解决?
我正在尝试使用 pip 和命令安装 pyevolve 模块:
pip安装pyevolve
并收到错误“UnicodeDecodeError:'ascii'编解码器无法解码位置0中的字节0xc0:序号不在范围内(128)”
我发现的唯一类似问题如下:
不幸的是,无法理解如何使用答案.. 任何人都可以帮我吗?
系统:Windows 7 64 位 Anaconda-2.2.0-Windows-x86_64
如何从外部文件读取特殊字符?这是一个简单.txt的法语文件,内容为https://fr.lipsum.com/的第一段:如您在我的屏幕截图中所看到的,文件编码为UTF-8,但是口音无法正确显示。
我在notepad ++和perl6脚本中尝试了各种编码,如下所示:
enc => "utf8"
enc => "latin1"
Run Code Online (Sandbox Code Playgroud)
使用Python或Ruby脚本,我不会遇到问题。我找不到关于此问题的任何精确示例,可能是因为perl 6还是很新的(??)。谢谢。
屏幕截图中显示了我的脚本:
my $text_contents = slurp "testfile.txt", enc => "utf8";
say $text_contents;
prompt;
Run Code Online (Sandbox Code Playgroud)

最终编辑:解决方案是启用一个选项,该选项在Windows 10 1803中处于beta状态,以使OS正确处理Unicode字符:请参阅下面的答案和评论...
标题很好地解释了这一点。我已经设置了 Notepad++,以便在按时在命令提示符中打开 Python 脚本F8,但在 CMD 中打开时,所有瑞典字符看起来都很混乱,但在例如 IDLE 中则完全正常。
\n\n这个简单的示例代码:
\n\n#!/usr/bin/env python\n#-*- coding: UTF-8 -*-\nprint "\xc3\xa5\xc3\xa4\xc3\xb6"\nRun Code Online (Sandbox Code Playgroud)\n\n看起来是这样的。
\n\n正如您所看到的,我用来在下面的 cmd 中打开 Python 的批处理文件的输出正确显示了字符,但上面的 Python 脚本却没有显示。我该如何解决?我只是想正确显示字符我不一定也使用UTF-8。
\n\n我使用这种方法在cmd中打开文件。
\n\n更新:已解决。在批处理文件顶部添加了“chcp 1252”行,然后在其下方添加了 cls 行,以删除有关其使用的字符编码的消息。然后我在python脚本中使用了“# --coding:cp1252-- ”,并将cmd中的字体更改为Lucida Console。这是通过单击 cmd 窗口右上角的 cmd 图标并进入属性来完成的。
\n我一直在尝试在我的Java应用程序中检索"unicode用户输入"以获取一个小实用程序代码段.问题是,它似乎正在Ubuntu"开箱即用",我猜想在UTF-8上运行OS宽编码,但从"cmd"运行时无法在Windows上运行.考虑的代码如下:
public class SerTest {
public static void main(String[] args) throws Exception {
testUnicode();
}
public static void testUnicode() throws Exception {
System.out.println("Default charset: " +
Charset.defaultCharset().name());
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
System.out.printf("Enter '????? ???': ");
String line = in.readLine();
String s = "????? ???";
byte[] sBytes = s.getBytes();
System.out.println("strg bytes: " + Arrays.toString(sBytes));
byte[] lineBytes = line.getBytes();
System.out.println("line bytes: " + Arrays.toString(lineBytes));
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.print("--->" + s + "<----\n");
out.print("--->" + line …Run Code Online (Sandbox Code Playgroud) 我正在使用Visual Studio C++ 2008(Express).当我运行下面的代码时,wostream(both std::wcout和std::wfstream)在遇到第一个非ASCII字符(在这种情况下是中文)时停止输出.纯ASCII字符打印正常.但是,在调试器中,我可以看到wstrings实际上已正确填充了中文字符,并且output << ...实际上正在执行.
Visual Studio解决方案中的项目设置设置为"使用Unicode字符集".为什么std::wostream无法输出ASCII范围之外的Unicode字符?
void PrintTable(const std::vector<std::vector<std::wstring>> &table, std::wostream& output) {
for (unsigned int i=0; i < table.size(); ++i) {
for (unsigned int j=0; j < table[i].size(); ++j) {
output << table[i][j] << L"\t";
}
//output << std::endl;
}
}
void TestUnicodeSingleTableChinesePronouns() {
FileProcessor p("SingleTableChinesePronouns.docx");
FileProcessor::iterator fileIterator;
std::wofstream myFile("data.bin", std::ios::out | std::ios::binary);
for(fileIterator = p.begin(); fileIterator != p.end(); ++fileIterator) {
PrintTable(*fileIterator, myFile);
PrintTable(*fileIterator, std::wcout);
std::cout<<std::endl<<"---------------------------------------"<<std::endl;
} …Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本来批量重命名和复制基于csv文件的图像.csv由第1列组成:旧名称和第2列:新名称.我想使用csv文件作为perl脚本的输入,以便它检查旧名称并使用新名称将副本复制到新文件夹中.(我认为)我与图像有关的问题.它们包含像ß等utf8字符.当我运行脚本时,它打印出来:Barfu├ƒg├ñsschen它应该是Barfußgässchen并且出现以下错误:
Unsuccessful stat on filename containing newline at C:/Perl64/lib/File/Copy.pm line 148, <$INFILE> line 1.
Copy failed: No such file or directory at X:\Script directory\correction.pl line 26, <$INFILE> line 1.
Run Code Online (Sandbox Code Playgroud)
我知道它与Binmode utf8有关,但即使我尝试一个简单的脚本(在这里看到它:如何从Perl输出UTF-8?):
use strict;
use utf8;
my $str = 'Çirçös';
binmode(STDOUT, ":utf8");
print "$str\n";
Run Code Online (Sandbox Code Playgroud)
它打印出来:Ãirþ÷s
这是我的整个剧本,有人可以向我解释我哪里出错了吗?(它不是最干净的代码,因为我正在测试的东西).
use strict;
use warnings;
use File::Copy;
use utf8;
my $inputfile = shift || die "give input!\n";
#my $outputfile = shift || die "Give output!\n";
open my $INFILE, '<', $inputfile or die "In use …Run Code Online (Sandbox Code Playgroud) 我用的是oracle 12G
\n\n当我@F:\\update.sql从 sql plus 运行时,它显示重音字符\xc3\xa9运行时,当我从 sqlplus 或 sql Developer 检索时,它会将重音字符显示为垃圾字符
当从 sql plus 运行单个语句时。现在,如果我从 sqlplus 检索它,它会显示正确的字符,但是当我从 sqldeveloper 检索它时,它再次显示垃圾字符。
\n\nupdate.sql内容是这样的
\n\nupdate employee set name =\'\xc3\xa9\' where id= 1;\nRun Code Online (Sandbox Code Playgroud)\n\n我想要的是当我运行 @F:\\update.sql 时,它应该以正确的格式插入/更新/检索它,无论它是来自 sqlplus 还是任何其他工具?
\n\n信息:- 当我跑步时
\n\n SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE \'%CHARACTERSET%\' \nRun Code Online (Sandbox Code Playgroud)\n\n我得到以下信息
\n\nPARAMETER VALUE\n------------------------------ ----------------------------------------\nNLS_CHARACTERSET WE8MSWIN1252\nNLS_NCHAR_CHARACTERSET AL16UTF16\nRun Code Online (Sandbox Code Playgroud)\n\n当我@.[%NLS_LANG%]从命令提示符运行时我看到
SP2-0310: unable to open file ".[AMERICAN_AMERICA.WE8MSWIN1252]"\nRun Code Online (Sandbox Code Playgroud)\n 控制台输出中的西里尔符号未正确显示.Jenkins在Windows 7上运行Tomcat/8.5.11
Jenkins属性显示:
file.encoding Cp1251
sun.jnu.encoding Cp1251
sun.stderr.encoding cp866
sun.stdout.encoding cp866
如何在Jenkins中设置UTF-8的编码?自动测试代码中的编码是UTF-8.
这是西里尔文中的示例问题
_максимум_РёРЅС"ормации
已解决:我在bin文件夹中创建了文件setenv.bat并设置了JAVA_OPTS =" - Dfile.encoding = UTF-8"
我有一个在 Oracle 数据库(Windows 或 Unix 操作系统)上运行的脚本。它提取数据,然后将其假脱机到 .txt 文件。
\n为了确保文件不变,在运行脚本时对数据进行哈希处理,然后在 Web 应用程序中重新计算该哈希值。这可以工作 9/10 次,但有时它会提供不匹配,即使文件是相同的,我将其隔离为编码问题。
\n为了确定文件使用的编码,该脚本将 3 个非 ASCII 字符写入文件,这些字符在不同的编码方案中编码不同。这些稍后会映射到后端。
\n--Encoding related information\nSPOOL &&file_desc/Encoding.txt\nSELECT ('\xe2\x82\xac'||';'||'\xc6\x92'||';'||'\xe2\x80\xb0') FROM sys.dual;\nSPOOL off\nRun Code Online (Sandbox Code Playgroud)\n在使用 UTF-8 编码的数据库上,应正确假脱机包含 NONASCII 字符的数据,并且 3 个 NONASCII 字符也应正确假脱机。
\n当使用 .AL32UTF8 系统字符集(与 DB 相同)时,数据会正确假脱机,但用于编码的 3 个字符则不然。这使得我无法确定使用了哪种编码方案。
\n数据库具有以下字符集(从database_properties获得):
\nNLS_CHARACTESET:AL32UTF8
\nNLS_NCHAR_CHARACTERSET:AL16UTF16
\n使用 SQL-Developer 时(将编码设置为 UTF8 后)),我没有任何问题。日语和希腊字符都正确显示,并且用于编码的字符也正确显示,从而在稍后重新计算时导致成功的哈希匹配。
\n我也需要它在 SQL*Plus 中工作,但我\xe2\x80\x99 遇到了问题。我\xe2\x80\x99已经尝试了一系列不同的变体。DB是Oracle 18c Express版本:
\n …