FoxPro、谷歌翻译和Unicode

FoxPro、谷歌翻译和Unicode,unicode,translate,visual-foxpro,Unicode,Translate,Visual Foxpro,我最近接到一个任务,写一个FoxPro与googletranslate接口,这样我们就可以将软件中的文本翻译成当前用户/机器的语言 我发现/修改/编写的代码非常适合基于拉丁语的字符集,但是 如果你尝试像中文这样的东西,它会返回所有的问号 我已经尝试将VFP函数STRCONV()用于所有可能的选项组合,但没有成功。我还尝试在文本被以任何方式操纵之前设置LocaleID,但仍然没有成功 在这一点上,我的想法。作为一名老DOS程序员,我在处理unicode方面几乎没有经验 我没有包含任何代码,因为正如

我最近接到一个任务,写一个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“不行。我仍然得到这个:当它应该是:òòòòòòòòòòòòòòòòòòòòòò(谢谢你的回复。我现在正在通读这篇文章——但到目前为止,任何提到的内容,我都已经尝试过了,但没有成功。但是,这是一篇大文章——也许我会在结尾之前找到一些东西:)