如何在文本文件中写入 Ω 或任何其他希腊字母?

How to write Ω or any other greek alphabet letter in textual file?

我的IDE是:Code::Blocks20.03(编译器:mingw 9.2.0)

示例代码为:

program greek_letters

implicit none

write(*,*) "resistance is 100 Ω"

end program 

当我启动程序时,我收到一条消息,指出 UTF 8 编码已更改,因为数据丢失防护。

有什么理由不使用希腊字母在 .txt 文件中写入工程结果?

并非所有编译器都支持 Unicode 字符,因此如果您使用 Unicode 字符,您的程序在使用其他编译器编译时可能会有不同的行为。 我认为目前 ifort 和 IBM 编译器都不支持 ISO_10646。 就我个人而言,我会写成 "Ohm"。

也就是说,这适用于 gfortran 8.1.0:

program test
implicit none
integer, parameter ::  ucs4  = selected_char_kind ('ISO_10646')
character(kind=ucs4):: OhmSymbol = char(int(z'03A9'),kind=ucs4)

open(14,file='test.txt',status='unknown', encoding='UTF-8')
write(14,*) "14", OhmSymbol    
close(14)

end program test

我不认为拥有 UTF-8 格式的源文件是个大问题。如果编译器不支持 UTF-8,它将看到多个字符并输出它们,但如果输出文件或输出终端支持 UTF-8,它们应该能够正确解释这些字符。如果编译器以某种方式试图重新解释字符文字中它不理解的字符,那么唯一的问题就会发生。我不知道在野外的任何编译器是否会发生这种情况。

请注意,UTF-8 字符将跨越多个默认字符,具体取决于(ASCII 字节)实际值。大写希腊欧米茄是两个字节 0xCE 0xA9.

Intel Fortran 和 gfortran 都在我的 Linux 终端中正确显示了以下程序。如果任何编译器有不同的做法,我会质疑实现的质量。这只是在终端中使用正确字体的问题(以及在您的网络浏览器中能够在这里看到它)。

print *, "Ω Ⱖ 世界"
end

您收到的警告实际上只是来自您的 IDE 的警告,它必须引入一个 UTF-8 字符,仅此而已。请注意,字符串的长度为 13 个默认的 gfortran 字符。 (我假设您没有在大型机上使用一些奇怪的 EBCDIC 编译器)。