FoxPro、谷歌翻译和Unicode
我最近接到一个任务,写一个FoxPro与googletranslate接口,这样我们就可以将软件中的文本翻译成当前用户/机器的语言 我发现/修改/编写的代码非常适合基于拉丁语的字符集,但是 如果你尝试像中文这样的东西,它会返回所有的问号 我已经尝试将VFP函数STRCONV()用于所有可能的选项组合,但没有成功。我还尝试在文本被以任何方式操纵之前设置LocaleID,但仍然没有成功 在这一点上,我的想法。作为一名老DOS程序员,我在处理unicode方面几乎没有经验 我没有包含任何代码,因为正如我所说的,除非您尝试将其与中文(或日语)一起使用,否则代码可以正常工作 请帮忙 编辑:这是与谷歌进行通信的功能。还有其他支持函数,但它们与编码无关FoxPro、谷歌翻译和Unicode,unicode,translate,visual-foxpro,Unicode,Translate,Visual Foxpro,我最近接到一个任务,写一个FoxPro与googletranslate接口,这样我们就可以将软件中的文本翻译成当前用户/机器的语言 我发现/修改/编写的代码非常适合基于拉丁语的字符集,但是 如果你尝试像中文这样的东西,它会返回所有的问号 我已经尝试将VFP函数STRCONV()用于所有可能的选项组合,但没有成功。我还尝试在文本被以任何方式操纵之前设置LocaleID,但仍然没有成功 在这一点上,我的想法。作为一名老DOS程序员,我在处理unicode方面几乎没有经验 我没有包含任何代码,因为正如
* MODIFIED BY: MICHAEL COOLEY - 11/19/2012
* PURPOSE: TRANSLATE TEXT FROM ONE LANGUAGE TO ANOTHER
* EXPECTS: STRING (SOURCE LANGUAGE CODE)
* STRING (DESTINATION LANGUAGE CODE)
* STRING (THE TEXT TO TRANSLATE)
* RETURNS:
FUNCTION Translate(lcFrom,lcTo,lcText)
LOCAL lcHttp AS MSXML2.XMLHTTP
LOCAL lcRequest AS String
lcRequest = "http://translate.google.com/translate_a/t?client=j" + ;
"&"+"text="+this.EncodeURL(lcText)+"&"+"hl="+lcTo+"&"+"sl="+lcFrom+"&"+"tl="+lcTo
lcHttp = CREATEOBJECT("MSXML2.XMLHTTP")
lcHttp.open("GET",lcRequest,.f.)
IF lcHttp.status == 200
lcText = this.GetTranslationString("trans", lcHttp.responseText) + CHR(10)
ELSE
lcText = ""
ENDIF
RETURN lcText
ENDFUNC
天哪,我真不敢相信人们还在用FoxPro。中文的问题是它可能使用2个字节来编码字符,而基于拉丁语的语言很可能是单字节的,因此与拉丁语1编码向后兼容,拉丁语1编码可能是foxpro使用的默认字符编码 你的应用程序实际上在哪里坏了?如中所示,这只是渲染问题吗?或者,你从谷歌翻译服务中获得的任何字符都是乱码吗 例如,如果您使用某种流表示(对不起,我不是VBA程序员,没有详细信息),则此流对象应具有设置字符编码的功能 编辑: 尝试这样设置请求头
lcHttp.setRequestHeader“Content-Type”、“text/html;charset=utf-8”
Unicode问题在VFP中并不新鲜,我建议阅读Rick Strahl的这篇文章:
---在Visual FoxPro Web和桌面应用程序中使用Unicode---
在本文中,我将介绍如何将Unicode与
在支持多种语言的上下文中的应用
同时。虽然VisualFoxPro不能直接显示Unicode,
它可以通过使用代码页显示不同的字符集–a
特定于语言环境的字符映射-VFP很容易支持。这
适用于仅显示单个站点内容的应用程序
语言/区域设置。但如果需要,这种方法有严重的局限性
同时显示来自多种语言的字符串。我开始
概述了这些问题以及如何在中使用Unicode
概述,然后演示如何检索和更新Unicode数据,以及
最后,向您展示如何使Unicode内容同时显示在
您的Web和桌面用户界面
谢谢你的回复!我也不敢相信我被困在使用FoxPro中:)据我所知,我得到的字符都是乱七八糟的。有些短语已经被手工翻译过,尽管没有一个能“正确”显示给我(我不在中国),但当我试图通过谷歌重新翻译同一短语时,我可以看到字符甚至不接近。如果使用WinHttp.WinHttpRequest.5.1,请确保设置编码,例如objWinHttp.setRequestHeader“内容类型”、“文本/html”;charset=UTF-8“不行。我仍然得到这个:当它应该是:òòòòòòòòòòòòòòòòòòòòòò(谢谢你的回复。我现在正在通读这篇文章——但到目前为止,任何提到的内容,我都已经尝试过了,但没有成功。但是,这是一篇大文章——也许我会在结尾之前找到一些东西:)