我在fortran中从txt文件读取处理器id时遇到问题

我在fortran中从txt文件读取处理器id时遇到问题,fortran,Fortran,我正在尝试创建一个用于定义处理器id的Fortran代码。我可以将处理器id写入文本文件。文本文件pid2.txt已创建,但我无法用Fortran读取它。当我在notepad或notepad++中打开文本文件时,一切似乎都正常!在Fortran中,当我打开文本文件时,它显示未知参数。有人能帮我解决这个问题吗 文本文件的内容是 ProcessorId BFEBFBFF00010676 示例代码如下所示: program get_PID implicit none charact

我正在尝试创建一个用于定义处理器id的Fortran代码。我可以将处理器id写入文本文件。文本文件
pid2.txt
已创建,但我无法用Fortran读取它。当我在
notepad
notepad++
中打开文本文件时,一切似乎都正常!在Fortran中,当我打开文本文件时,它显示未知参数。有人能帮我解决这个问题吗

文本文件的内容是

ProcessorId       
BFEBFBFF00010676  
示例代码如下所示:

program get_PID
implicit none
character(200) :: line
call system('wmic cpu get ProcessorId >pid2.txt ' )
open (1,file='pid2.txt')
read (1,*) line
read (1,*) line
CLOSE (1)   
end program

您有什么建议吗?

您的问题是
wmic
输出的编码。Windows默认使用UTF-16。Fortran还不能处理这种编码。参考英特尔Fortran的帮助,如前所述,仅支持UTF-8

因此,您必须将输出的编码更改为ANSI和/或本地代码页。这可以通过管道将
wmic
的结果通过
more
命令来完成,如SO超级用户站点中的所述

请按以下方式更改您的系统调用:

call system('wmic cpu get ProcessorId | more >pid2.txt ' )
正如预期的那样,现在您将在代码中获得处理器ID信息


希望有帮助。

您尝试过更换IO单元吗?您使用的是什么版本的Fortran和什么编译器?若你们使用的是GCC,你们可以直接调用。你们读了两行,为什么?否则,请告诉我们您使用的编译器和编译器版本、您编译程序的具体方式以及错误消息的具体内容。我使用的是英特尔FORTRAN 2015,使用的是visual studio 2013。编译器没有显示错误。我不知道如何通过这个命令“call system('wmic cpu get ProcessorId>pid2.txt')来更改IO单元。它是用Fortran拼写的,已经正式使用了30年。如果没有错误,为什么你认为这是错误的?我不明白您所说的“在Fortran中,当我打开文本文件时,它显示未知参数”Hi M Ch.Sound很好,该命令解决了您的问题:)。请你把这个答案标为已接受的答案好吗?只需按下我帖子左侧的灰色复选标记。谢谢,已经做好了,亲爱的