如何在文本文件中写入 Ω 或任何其他希腊字母?
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 编译器)。
我的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 编译器)。