我正在使用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) 控制台输出中的西里尔符号未正确显示.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"
我已经chcp 65001在命令提示符和Windows Powershell中强制使用了一段时间,但是从SO和其他几个社区的问答环节来看,这似乎是一种危险且低效的解决方案。Microsoft是否提供一种chcp 65001可以永久保存而无需手动更改注册表的改进/完整替代方案?如果没有,将来是否有公开宣布的时间表或议程来支持Windows CLI中的UTF-8?
我个人已经使用了chcp 949韩国字符支持,但反斜线的怪异显示\在多个应用程序(如Neovim),以及字符和不正确/难以理解的显示器是不是韩国未通过支持949似乎变得更加的最近有问题。
您好我只是想知道如何在C++中显示无穷大(∞)?我正在使用CodeBlocks.我在这个主题上阅读了几个关于Q&A的内容,但我是这方面的新手,尤其是Hex编码和东西.我需要包括什么以及我要准确输入什么内容.如果有人可以编写代码并解释它,那就太好了!谢谢!
我正在检查日语字符串的空格并用"_"替换它们.这就是我在做的事情:
string input1="abc dfg";
string input2="????";
if(input1.Contains(" "))
{
Console.WriteLine(input1.Replace(" ","_"));
}
Console.WriteLine("------------------");
if(input2.Contains(" "))
{
Console.WriteLine(input2.Replace(" ","_"));
}
Run Code Online (Sandbox Code Playgroud)
这是此代码的输出
abc__dfg
------------------
Run Code Online (Sandbox Code Playgroud)
它在简单的英文字符串中用"_"替换空格,但在日语字符串中则不是.
问题
当我想在Python解释器中输入 Unicode字符时出现问题(为简单起见,我在示例中使用了a-umlaut,但我首先遇到了这个用于Farsi字符).每当我将python与chcp 65001代码页一起使用,然后尝试输入一个Unicode字符时,Python就会退出而没有任何错误.
我花了好几天试图解决这个问题无济于事.但是今天,我在python网站上发现了一个帖子,另一个在MySQL上发现了一个线程,另一个在Lua用户身上发现了这个突然退出的问题,尽管没有任何解决方案,有些说这chcp 65001本身就是破坏的.
一劳永逸地知道这个问题是与chcp设计有关还是有可能的解决方法.
重现错误
chcp 65001
Python 3.X:
Python shell
print('ä')
结果:它只是退出shell
然而,这是有效的python.exe -c "print('ä')"
,也是这样的:print('\u00e4')
结果:ä
在Luajit2.0.4中
print('ä')
结果:它只是退出shell
但这有效: print('\xc3\xa4')
到目前为止,我已经提出了这个观察结果:
所以, 这不是一个Python的错误和我们不能在Windows命令提示符或任何其包装像Conemu,Cmder的CLI程序直接使用Unicode字符(我用Cmder能够看到和在Windows中使用Unicode字符shell和我这样做没有任何问题).它是否正确?
正如问题所说,我必须做什么才能将 Unicode 字符打印到输出控制台?我必须使用哪些设置?现在我有这个代码:
wchar_t* text = L"the ?";
wprintf(L"Text is %s.\n", text);
return EXIT_SUCCESS;
Run Code Online (Sandbox Code Playgroud)
它打印:
Text is the ?.
我尝试将输出控制台的字体更改为 MS Mincho、Lucida Console 和其他一些字体,但它们仍然不显示日文字符。
那么,我该怎么办?
我有一堆动态创建的*.BAT文件.这些BAT文件用于在服务器中创建文件夹.每个BAT文件中只有一行,例如:MKDIR\NetworkShare\abc\123
这个"abc\123"字符串来自数据库.
它可以运行一段时间按需创建数千个子文件夹,直到今天它停止创建一个特殊的子文件夹,它在字符串中有一个"关闭单引号"(如果从dos提示符输入,则为Alt+ 0146).
我做了一些研究,发现这个"关闭单引号"是一个扩展的ASCII字符.它无法在ANSI BAT文件中正确保存(最终为其他内容).我尝试了UNICODE和UTF-8 BAT文件,但它不起作用.
唯一近乎接近的解决方案是我尝试使用二进制编辑器来确保代码146,但代码146给了我Æ(ALT-146)而不是"单引号"(Alt+ 0146).
我知道我可以在DOS提示符下手动输入特殊字符(使用键盘Alt+ ).但是有没有办法在BAT文件中正确保存这个"关闭单引号"(Alt+ 0146)所以我可以动态执行它们?
主机系统是Windows Server 2003美国英语.
我读到在创建数据库之后无法更改数据库的文本编码,并且将无声地忽略任何尝试这样做的操作.(从这里)
在这篇文章中,为了创建主数据库,在SQLite中说'databasename.db',我们必须在命令提示符下键入以下内容:
sqlite3 databasename.db
它创建数据库并显示sqlite shell:
C:\Documents and Settings\Administrator>sqlite3 AudioData.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何设置PRAGMA编码?如果在创建数据库命令之后启动sqlite shell,我怎么能在create database命令之前给出PRAGMA命令?提前致谢!
我遇到了GCC编译器和Windows CMD的问题,因为我无法正确看到UTF-8字符.我有以下代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char caractere;
int inteiro;
float Float;
double Double;
printf("Tipo de Dados\tNúmero de Bytes\tEndereço\n");
printf("Caractere\t%d bytes \t em %d\n", sizeof(caractere), &caractere);
printf("Inteiro\t%d bytes \t em %d\n", sizeof(inteiro), &inteiro);
printf("Float\t%d bytes \t\t em %d\n", sizeof(Float), &Float);
printf("Double\t%d bytes \t em %d\n", sizeof(Double), &Double);
printf("Caractere: %d bytes \t em %p\n", sizeof(caractere), &caractere);
printf("Inteiro: %d bytes \t em %p\n", sizeof(inteiro), &inteiro);
printf("Float: %d bytes \t\t em %p\n", sizeof(Float), &Float);
printf("Double: %d bytes \t em %p\n", …Run Code Online (Sandbox Code Playgroud)