Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net .NET本地化:日文字符显示为正方形_Vb.net_Winforms_Unicode_Localization_Internationalization - Fatal编程技术网

Vb.net .NET本地化:日文字符显示为正方形

Vb.net .NET本地化:日文字符显示为正方形,vb.net,winforms,unicode,localization,internationalization,Vb.net,Winforms,Unicode,Localization,Internationalization,好的,我不做太多的.Net编程,但我有一个我维护的,所以这个问题的答案可能是显而易见的 设置: 安装了所有语言包的Windows 7旗舰版 Visual Studio 2008 Winforms VB.Net项目 我正在本地化这个项目,当我制作日文版的表单时,字符显示为正方形,尽管它们在我的浏览器中渲染正确。我猜这是因为默认字体没有这些字符的字形 所以,我的问题是: winforms是UTF-8还是其他字符编码? 有没有办法改变字符编码? 我应该更改日文表单的字体,还是Windows会这样做

好的,我不做太多的.Net编程,但我有一个我维护的,所以这个问题的答案可能是显而易见的

设置:

  • 安装了所有语言包的Windows 7旗舰版
  • Visual Studio 2008 Winforms VB.Net项目
我正在本地化这个项目,当我制作日文版的表单时,字符显示为正方形,尽管它们在我的浏览器中渲染正确。我猜这是因为默认字体没有这些字符的字形

所以,我的问题是:

winforms是UTF-8还是其他字符编码? 有没有办法改变字符编码? 我应该更改日文表单的字体,还是Windows会这样做? 这里的一般最佳实践是什么

我想知道我正在将字符正确地复制到我的表单中,并且我想能够测试它们。我该怎么做

谢谢你的反馈

编辑
谢谢你的信息!这是我发现的

Arial Unicode MS有所有的字形,但我没有使用它,因为它不在VS2008字体列表中。我手动编辑字体框以使用它,但Visual Studio会抛出消息,“试图读取或写入受保护的内存。这通常表示其他内存已损坏。”我猜这是因为VS出于某种原因没有访问该字体的权限。我回到默认字体,可怕的错误信息就会消失

然后,即使使用Arial Unicode MS,文本也会在表单标题中呈现为块。相同的文本在标签中正确呈现

所以,我想我想使用默认字体,让Windows来处理它。我想我已经读到了从XP开始的所有东西都能处理它。Windows 2000不会,这是一个遗憾,但无论如何,我不知道我应该使用什么字体,无论它是什么字体都被排除在VS之外。我不知道如何添加它,而不会收到大量关于受保护内存的错误消息

现在的问题是,调整表单中标签的大小,因为翻译的文本通常更大

另外,我没有一个支持团队来为我做这件事,但我可能会安装额外的Windows7副本,然后换成日语包并试着运行它。但这成了一大痛苦。我想我读到过,你可以在应用程序运行时更改语言,但这似乎不是真的。MS文档谈到了如何做到这一点,但Windows 7也告诉您必须注销才能更改语言

哥特式女士似乎奏效了,这是VS2008的一部分,但标题栏仍然是正方形。这真的很奇怪,因为winform中有相同的标志符号。这是因为标题栏字体是在系统级别设置的,而不是在应用程序级别设置的吗


对不起,说得太多了。我不确定这里是否有问题。只是想把这一切都说出来,所以这可能会对其他人有所帮助。

以下是Joel Spolsky关于您的问题的评论。

任何.NET代码,包括Windows窗体,都使用Unicode编码为UTF16。您的问题不太可能是编码问题,它会产生问号而不是正方形。获取正方形表示您使用的字体缺少显示日文字符所需的字形

您可以使用charmap.exe小程序找出所用字体支持的字形。如果它们丢失了,那么操作系统将被迫退回到替代字体,并在找不到替代字体时失败。显示正方形就是它所能做的一切。旧的操作系统版本很可能是造成这一事故的原因,尤其是对于没有安装可选东亚字体的XP


请注意,在启动日文版Windows的计算机上,此字体问题不太可能成为问题。当然,它必须使用合适的字体来显示日语文本。您可以通过MSDN订阅获取特定语言版本的Windows。至少为您的QA人员准备一个,以便他们能够验证一切是否正常工作。

请澄清,您是否安装了语言支持:控制面板/区域选项/显示语言。大概源代码中有日语文本。您正在将源代码保存为某种Unicode,对吗


三年来,我一直在维护一个基于日语表单的应用程序(www.jbrute.com),该应用程序从MFC迁移到WinForms,再迁移到WPF,在美国的XP、Vista和Win7的英语版本中。它显示汉字、假名并使用IME。完全没有问题。

所有语言版本的Windows 7是否都提供Arial Unicode?另外,如果在设计时选择了运行时不可用的字体,您知道会发生什么情况吗?Windows/.NET运行时是否自动选择替换字体?是。Windows字体映射器在英语Win7上选择替代字体Segoe UI。可能不是日语。不要发送未经测试的软件。Arial Unicode MS不在Windows 7随附的Microsoft字体列表中?谢谢你的信息!这是我发现的。Arial Unicode MS有所有的字形,但我没有使用它,因为它不在VS2008字体列表中。当我使用它时,VS抛出消息,试图读取或写入受保护的内存。这通常表示其他内存已损坏。“我猜这是因为VS出于某种原因没有访问该字体的权限。我回到默认字体,一切都很好。要编辑原始消息,因为我的空间不足…窗口标题栏的字体在控制面板显示小程序中设置。同样,这不会被设置为无法在日文版Windows.Gah上呈现日文字形的字体!支持错误字体是我在家里为家里的日本人使用iMac的原因之一。无缝的语言切换使一切变得简单。不幸的是,这并不能真正帮助你解决开发问题。我就是我们