如何在 vb.net 中创建随机 Unicode 或 UTF-8 文件?
How to create a random Unicode or UTF-8 file in vb.net?
我的文件编码有问题。这些是直接访问文件。提供这些文件的文本框能够显示所有字符,波兰语、乌克兰语等,当然还有我的语言,法语,所有重音字符。
另一方面,认为它们必须用 Unicode 编码,而它们是用 utf8 创建的,我想(我一点也不确定),保存数据后,异国情调消失了!只剩下法国口音了!
示例:Róża Czacka
。哪个给了我Róza Czacka
一次记录!
我用来保存文件的代码:
Nbr = FreeFile()
FileOpen(Nbr, OuvrirFichier, OpenMode.Random, OpenAccess.ReadWrite, _
OpenShare.LockWrite, Len(bibliotheque))
enreg = FileLen(OuvrirFichier) \ Len(bibliotheque)
With bibliotheque
.Title = TextBox2.Text
.Name = TextBox1.Text
.Charge = TextBox4.Text
.Institute = TextBox15.Text
.Celebration = TextBox5.Text
.Birth = TextBox7.Text
.Death = TextBox9.Text
.Otherparties = TextBox13.Text
.Othernames = TextBox18.Text
.Venerable = TextBox23.Text
.Beatified = TextBox24.Text
.Canonized = TextBox25.Text
.Heading = TextBox26.Text
.Patron = TextBox28.Text
.Link = TextBox29.Text
.Biography = TextBox31.Text
.Image = TextBox33.Text
End With
FilePut(Nbr, bibliotheque, enreg)
FileClose(Nbr)
首先,您调用的函数太过时了,很多人都认不出它们了。事实上,我不得不亲自查阅其中的一些内容才能了解您在做什么。推荐使用Microsoft.VisualBasic.FileIO.FileSystem
class. If you need more flexibility, you can look at the classes in the System.IO
.
中的方法
在您的情况下,您似乎试图将二进制对象保存到文件中,为此您可以使用 BinaryFormatter
. Here is a sample code slightly modified from what is provided on the Microsoft Docs page for the BinaryFormatter class.
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
Module Module1
Sub Main()
Dim bibliotheque = New With {
.Title = "Title",
.Name = "NameOf",
.Charge = "Charge" ' add other initialization code
}
Using fs = New FileStream("C:\folder\file.dat", FileMode.Create)
Dim bf = New BinaryFormatter()
bf.Serialize(fs, bibliotheque)
End Using
End Sub
End Module
您还可以在 BinaryFormatter 的同一页面上查看有关如何反序列化(或打开)已保存对象的示例。
我解决了我的问题。 None 的方法工作正常,所以当我希望字符显示为 UTF-8 编码时,我仍然剩下 ANSI 编码的文件!
在 Windows 10(以及其他)下,打开控制面板 > 区域 > 管理选项卡 > 更改区域设置 ...> 然后,选中框:Beta,如下面的屏幕截图所示。就这些了。
克劳德
我的文件编码有问题。这些是直接访问文件。提供这些文件的文本框能够显示所有字符,波兰语、乌克兰语等,当然还有我的语言,法语,所有重音字符。
另一方面,认为它们必须用 Unicode 编码,而它们是用 utf8 创建的,我想(我一点也不确定),保存数据后,异国情调消失了!只剩下法国口音了!
示例:Róża Czacka
。哪个给了我Róza Czacka
一次记录!
我用来保存文件的代码:
Nbr = FreeFile()
FileOpen(Nbr, OuvrirFichier, OpenMode.Random, OpenAccess.ReadWrite, _
OpenShare.LockWrite, Len(bibliotheque))
enreg = FileLen(OuvrirFichier) \ Len(bibliotheque)
With bibliotheque
.Title = TextBox2.Text
.Name = TextBox1.Text
.Charge = TextBox4.Text
.Institute = TextBox15.Text
.Celebration = TextBox5.Text
.Birth = TextBox7.Text
.Death = TextBox9.Text
.Otherparties = TextBox13.Text
.Othernames = TextBox18.Text
.Venerable = TextBox23.Text
.Beatified = TextBox24.Text
.Canonized = TextBox25.Text
.Heading = TextBox26.Text
.Patron = TextBox28.Text
.Link = TextBox29.Text
.Biography = TextBox31.Text
.Image = TextBox33.Text
End With
FilePut(Nbr, bibliotheque, enreg)
FileClose(Nbr)
首先,您调用的函数太过时了,很多人都认不出它们了。事实上,我不得不亲自查阅其中的一些内容才能了解您在做什么。推荐使用Microsoft.VisualBasic.FileIO.FileSystem
class. If you need more flexibility, you can look at the classes in the System.IO
.
在您的情况下,您似乎试图将二进制对象保存到文件中,为此您可以使用 BinaryFormatter
. Here is a sample code slightly modified from what is provided on the Microsoft Docs page for the BinaryFormatter class.
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
Module Module1
Sub Main()
Dim bibliotheque = New With {
.Title = "Title",
.Name = "NameOf",
.Charge = "Charge" ' add other initialization code
}
Using fs = New FileStream("C:\folder\file.dat", FileMode.Create)
Dim bf = New BinaryFormatter()
bf.Serialize(fs, bibliotheque)
End Using
End Sub
End Module
您还可以在 BinaryFormatter 的同一页面上查看有关如何反序列化(或打开)已保存对象的示例。
我解决了我的问题。 None 的方法工作正常,所以当我希望字符显示为 UTF-8 编码时,我仍然剩下 ANSI 编码的文件!
在 Windows 10(以及其他)下,打开控制面板 > 区域 > 管理选项卡 > 更改区域设置 ...> 然后,选中框:Beta,如下面的屏幕截图所示。就这些了。
克劳德