txt输出文件乱码

代码如下

let
    # stabiltity test
    a= real(HopTB.Optics.get_shg(tm, 1, 2, 2, collect(0:0.1:5), 0.0, [10, 10, 10]))
   # b= real(HopTB.Optics.get_shg_B(tm, 1, 2, 2, collect(0:0.1:5), 0.0, 10.0, 3, [5, 5, 1])) 
    println(a)
   #println(b)
   file=open("optics.txt","w+")
   write(file,a)
   close(file)
end

a的输出结果是

[1678.970906725339, 1007.5701115046704, -119.41488175826825, -364.09488483573244, -91.84180426852555, 0.35357083645304027, -330.9148697656117, -261.55560042259066, -57.243035533242534, 155.584968160561, 166.24527995543644, -77.59031670595469, -153.86721762495714, -172.6103960223956, -153.85557178314502, -96.48176831483353, -108.24265431511678, -81.80321600250076, -85.73038623059598, -32.0562293694766, -35.51695404383944, -30.788094730767376, -16.29112236878847, -38.03030312993627, -33.02563403908606, -16.59786074525274, -13.881996142212852, -9.710725595941788, -5.788695974647089, -5.377702765507822, -3.7606794780895094, -2.2961231441085226, -1.8438775653336068, -2.339059960193293, -3.8141728303937583, -0.8599747258761784, 5.28211198622668, 9.6864889631386, 7.050099395842896, 2.586067668589191, -2.8185728901388227, -8.907950668223112, -5.701210563327829, -5.859002520593423, -5.606214576327054, 0.09732298154059814, 8.752484667643587, 8.883124354283488, 7.198568714675979, 5.341167501473495, 3.872349026954609]
765507822, -3.7606794780895094, -2.2961231441085226, -1.8438775653336068, -2.339059960193293, -3.8141728303937583, -0.8599747258761784, 5.28211198622668, 9.6864889631386, 7.050099395842896, 2.586067668589191, -2.8185728901388227, -8.907950668223112, -5.701210563327829, -5.859002520593423, -5.606214576327054, 0.09732298154059814, 8.752484667643587, 8.883124354283488, 7.198568714675979, 5.341167501473495, 3.872349026954609]

是Vector{Float64}类型的。
txt文件用记事本打开后乱码,vscode没法打开

这里你直接write(file,a),相当于直接把数组写进了二进制文件,当然用ASCII打开会是乱码。并不是说文件名加了尾缀"txt"就是ASCII格式的。

打个比方,我可以随便给文件取名,*.png不一定是图片,*.docx也不一定是word。

2 个赞

您是指write时需要指定格式是吗
我现在把write改成了writedlm,成功的显示了数据