相关疑难解决方法(0)

完整的等宽 Unicode 字体?

我正在寻找一种好的编程字体,它可以让我在 Unicode(通常是日语和中文以及一些拉丁语和西里尔语)中添加注释和字符串文字。

到目前为止,情况似乎是“完整的,等宽的,免费的,选择 2”,而谷歌让我失望了(也许是因为没有好的?)。

我发现的最好的是 Arial Unicode 但它不是等宽字体,这对我和我使用的编辑器来说是一个很大的麻烦。更不用说我在编写 Python 代码时的 Python 缩进了。


(欢迎链接、修改)

unicode fonts text-editor

145
推荐指数
6
解决办法
4万
查看次数

Writeln能否支持Unicode?

考虑这个程序:

{$APPTYPE CONSOLE}

begin
  Writeln('????????Z??????????????????????????????????????');
end.
Run Code Online (Sandbox Code Playgroud)

我的控制台上使用Consolas字体的输出是:

????????Z??????????????????????????????????????

Windows控制台非常能够支持Unicode,如此程序所示:

{$APPTYPE CONSOLE}

uses
  Winapi.Windows;

const
  Text = '????????Z??????????????????????????????????????';

var
  NumWritten: DWORD;

begin
  WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), PChar(Text), Length(Text), NumWritten, nil);
end.
Run Code Online (Sandbox Code Playgroud)

输出为:

????????Z??????????????????????????????????????

可以Writeln说服尊重Unicode,还是它固有的残缺?

windows delphi delphi-xe7

25
推荐指数
3
解决办法
3098
查看次数

如何在Windows上将UTF-8字符串打印到std :: cout?

我正在用C++编写一个跨平台的应用程序.所有字符串都在内部进行UTF-8编码.请考虑以下简化代码:

#include <string>
#include <iostream>

int main() {
    std::string test = u8"Greek: ????; German: Übergrößenträger";
    std::cout << test;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Unix系统上,std::cout期望8位字符串是UTF-8编码的,所以这段代码工作正常.

但是,在Windows上,要求std::cout8位字符串采用Latin-1或类似的非Unicode格式(取决于代码页).这导致以下输出:

希腊语:????????; 德语:?£bergr?Âentr?ñger

如何std::cout在Windows上将8位字符串解释为UTF-8?

这是我试过的:

#include <string>
#include <iostream>
#include <io.h>
#include <fcntl.h>

int main() {
    _setmode(_fileno(stdout), _O_U8TEXT);
    std::string test = u8"Greek: ????; German: Übergrößenträger";
    std::cout << test;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望_setmode能做到这一点.但是,这会在调用的行中导致以下断言错误operator<<:

Microsoft Visual C++运行时库

调试断言失败!

程序:d:\ visual studio 2015\Projects\utf8test\Debug\utf8test.exe文件:minkernel\crts\ucrt\src\appcrt\stdio\fputc.cpp行:47

表达式:((_Stream.is_string_backed())||(fn = _fileno(_Stream.public_stream()),((_ textmode_safe(fn)== __crt_lowio_text_mode :: ansi)&&!_ tm_unicode_safe(fn)))) …

c++ windows encoding utf-8

18
推荐指数
3
解决办法
2万
查看次数

是否可以在控制台中用 C 打印孟加拉语?

是否可以在控制台中用 C 打印孟加拉语?如果可以做到,我该怎么做?

我试过:

wprintf (L"Character: %lc %lc \n", L'?', 2440);
Run Code Online (Sandbox Code Playgroud)

这不起作用。它只是显示一个未知的符号。在控制台中处理 UTF-8 格式数据的最佳公式是什么?如果可以使用 C++,我想知道。

c c++

3
推荐指数
1
解决办法
2012
查看次数

标签 统计

c++ ×2

windows ×2

c ×1

delphi ×1

delphi-xe7 ×1

encoding ×1

fonts ×1

text-editor ×1

unicode ×1

utf-8 ×1