我需要国际化我的应用程序。
假设我有一个控件(例如备忘录),用户可以输入一些文本。用户可能来自日本、俄罗斯、加拿大等地。我想将字符串保存为TXT文件以供以后使用。我将使用自己的函数来写文本,而不是像TMemo.SaveToFile()这样的东西。
我如何将字符串保存到磁盘上?是使用UTF8还是UTF16格式?
我需要国际化我的应用程序。
假设我有一个控件(例如备忘录),用户可以输入一些文本。用户可能来自日本、俄罗斯、加拿大等地。我想将字符串保存为TXT文件以供以后使用。我将使用自己的函数来写文本,而不是像TMemo.SaveToFile()这样的东西。
我如何将字符串保存到磁盘上?是使用UTF8还是UTF16格式?
根据数据的语言而定。
如果您的数据大多是西方语言,并且希望减少所需的存储量,则应选择UTF-8,因为对于这些语言,它将占用UTF-16约一半的存储空间。读取数据时需要将其转换为UTF-16,这是Windows默认使用的编码,也是Delphi的(Unicode)字符串。
如果您的数据主要是非西方语言,则UTF-8可能比UTF-16占用更多存储空间,因为对于某些字符,每个字符可能占用多达 4 字节。(请参见@KennyTM的评论)
基本上:使用代表性的用户数据进行一些测试,看哪个在存储要求和加载时间方面表现更好。我们有一些惊喜,即UTF-16比我们想象的要慢。不必从UTF-8转换为UTF-16可以提高性能,但由于UTF-16的数据量更大,因此磁盘访问导致性能损失。
string
布局,以及默认的数据库API布局;