Delphi 7西里尔文字符未正确显示

Delphi 7西里尔文字符未正确显示,delphi,delphi-7,cyrillic,Delphi,Delphi 7,Cyrillic,我最近请求(并付费)翻译我的Delphi应用程序,以支持马其顿语(西里尔文字体)支持。 我把文字翻译给我的合同翻译,她把翻译好的字符串发给我。文本是从我的所有.dfm和.pas文件中提取的 当我用西里尔文翻译替换原始文本时,我可以在我最喜欢的记事本++(或记事本)中打开.dfm.pas文件,并且我可以正确地看到翻译后的字符 当我在Delphi中打开这些文件(作为dpr文件)时,我看到如下内容: 请有人告诉我如何在Delphi中正确转换/显示这些字符串。 我使用的是马其顿地区设置,但这对我解决这

我最近请求(并付费)翻译我的Delphi应用程序,以支持马其顿语(西里尔文字体)支持。 我把文字翻译给我的合同翻译,她把翻译好的字符串发给我。文本是从我的所有.dfm和.pas文件中提取的

当我用西里尔文翻译替换原始文本时,我可以在我最喜欢的记事本++(或记事本)中打开.dfm.pas文件,并且我可以正确地看到翻译后的字符

当我在Delphi中打开这些文件(作为dpr文件)时,我看到如下内容:

请有人告诉我如何在Delphi中正确转换/显示这些字符串。 我使用的是马其顿地区设置,但这对我解决这个问题没有帮助

是的,我仍然在使用Delphi7,因为我喜欢它/购买了这个版本

更新

德尔福原文: 原文:ПÐÐÐÐÐÐÐÐÐÐÐ-ÐÐÐÐÐÐÐÐÐÐÐ

正确文本: ППППППППППППППППППППППППППППППППППППППСССППППППППППППППП


我注意到,当我将ParentFont属性更改为false,字体设置为Verdana和西里尔文(俄语字符集),然后复制/粘贴西里尔文文本时,它在Delphi中正常显示,所以我解决了这个问题

解决方案是多步骤的,需要记事本+:

第一步:将.dfm中的所有字体替换为(例如)Verdana或允许西里尔文支持的字体

第二步:将所有
ParentFont=False
替换为
ParentFont=True

第三步:在记事本++中选择:编码->转换为ANSI

仅此而已,对所有.dfm和.pas文件执行此操作(仅第3步)


我很高兴没有听David Heffernan的,也没有放弃!

您的文本文件是UTF-8编码的,而Delphi7需要WinAnsi编码,代码页1251用于西里尔文字符


您有
UTF8Decode()
函数在System.pas中以编程方式进行转换(如果您愿意)。

重复的字符表示字符串采用某种形式的Unicode,但在Delphi中显示为8位ASCII码,带有代码页。如果您将一个或两个实际字符串作为文本和一系列十六进制值发布,这将非常有用,以便查看answer可以计算出所使用的编码。我们没有代码。我们不知道您安装了什么字体。我们不知道您是否使用tnt Unicode库。我们无法理解您为什么要在一个无法在本地执行的工具中尝试国际代码。@DavidHeffernan您想要什么代码?源代码并不重要,我用西里尔替换了EN textc文本,没有其他..我的意思是在.dfm文件的所有标题值中。我没有使用tnt unicode库。您需要以正确的相关编码输入马其顿语,并确保客户端在运行其窗口时将其语言环境设置为macedonian/cyrillic。D7中没有unicode支持,因此只需使用“A”编码匹配。正确的工具。Unicode Delphi或TNT Unicode组件与Delphi 7。这是您需要的帮助,尽管您看不到。就我个人而言,当我使用代码执行此操作时,我选择了第一个选项。David确实给了您一些很好的建议。ANSI编码的应用程序仍然可能存在基于区域设置的渲染问题。例如,Mac碰巧拥有英文版Windows但仍希望使用马其顿本地化程序的edonian用户将看不到正确呈现的文本(无需借助黑客)。考虑到现在是2019年,升级到基于Unicode的解决方案仍然是您的最佳选择,因为它允许应用程序在任何特定的用户环境中无缝集成。这也使将来支持其他语言变得更加容易。我在过去6年中没有更改简单的代码。因此不需要升级/更新:)现在新的region=新问题,我解决了..但我理解您的点调整:涵盖西里尔语脚本语言。适用于波兰语、捷克语、斯洛伐克语等中欧/东欧语言,@PeterWolf您当然是对的!谢谢您的输入。