2012-11-28 5 views
1

최근 Google 번역과의 인터페이스를 위해 FoxPro를 작성하는 작업이 이루어 졌으므로 소프트웨어의 텍스트를 현재 사용자/컴퓨터의 언어로 번역 할 수 있습니다.FoxPro, Google 번역 및 유니 코드

라틴어 기반 문자 집합에 대해 필자가 찾은 코드/수정 된/수정 된 코드는 완벽하게 작동하지만 중국어와 같은 문자를 사용하면 모든 물음표가 다시 나타납니다.

가능한 모든 옵션 조합과 함께 VFP 기능 STRCONV()를 사용해 보았지만 성공하지 못했습니다. 나는 또한 텍스트가 어떤 식 으로든 조작되기 전에 LocaleID를 설정하려고 시도했다. 여전히 운이 없다.

이 시점에서 나는 아이디어가 없습니다. 오래된 DOS 프로그래머이기 때문에 유니 코드를 다룰 때 경험이 거의 없습니다.

중국어 (또는 일본어)와 함께 사용하지 않으면 코드가 제대로 작동하기 때문에 코드를 포함하지 않았습니다.

도와주세요!

편집 : Google과 통신하는 기능입니다. 다른 지원 기능이 있지만 인코딩과 관련이 없습니다.

* 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 

답변

0

유니 코드 문제 같은 시도 설정 요청 헤더, 나는 릭 Strahl에서이 기사를 읽어 보시기 바랍니다 VFP에서 새로운 것이 아니다 비주얼 폭스 프로 웹 및 데스크톱 응용 프로그램 ---

http://www.west-wind.com/presentations/foxunicode/foxunicode.asp

이 기사에서는 을 동시에 지원하는 컨텍스트에서 응용 프로그램과 함께 유니 코드를 사용하는 방법에 대해 설명합니다. Visual FoxPro에서 유니 코드를 직접 표시 할 수는 없지만 VFP가 쉽게 지원하는 CodePages ( 로캘 별 문자 매핑)를 사용하여 다른 문자 집합을 표시 할 수 있습니다. 이 은 언어/로캘의 콘텐츠 만 표시하는 애플리케이션에 적합합니다. 그러나 여러 언어에서 동시에 문자열을 표시하려면 이 필요하면이 접근법에는 심각한 제한이 있습니다.나는 의 개요와 이슈에 대한 개요 및 유니 코드에서 유니 코드를 사용하는 방법을 시작한 다음 유니 코드 데이터를 검색하고 업데이트하는 방법을 보여주고 마침내 유니 코드 콘텐츠를 얻는 방법을 보여줍니다. 웹 및 데스크톱 사용자 인터페이스

+0

답장을 보내 주셔서 감사합니다. 지금 기사를 읽고 있습니다. - 그러나 지금까지는 아무것도 이미 언급했듯이, 나는 성공하지 않고 이미 시도해 왔지만, 큰 기사입니다. 아마도 끝날 무언가를 찾을 것입니다. :) –

1

mg, 나는 사람들이 여전히 FoxPro를 사용한다고 믿을 수 없습니다. Chineese의 문제는 아마 문자를 인코딩하는 데 2 ​​바이트를 사용하는 반면 라틴 기반 랭은 대부분 단일 바이트 일 가능성이 높으므로 latin1 인코딩과 호환되며 foxpro가 사용하는 기본 문자 인코딩 인 것 같습니다.

앱이 실제로 어디에서 중단됩니까? 마찬가지로, 렌더링 문제입니까? 또는 Google 번역 서비스에 의사 소통하기 위해 사용하는 문자를 사용하는 문자가 왜곡되어 돌아오고 있습니까?

예. 당신이 어떤 종류의 스트림 표현을 사용한다면 (미안 해요, VBA 프로그래머가 아니고, 세부 사항을 가지고 있지 않다),이 스트림 객체는 문자 인코딩을 설정하는 기능을 가져야한다.

편집 :

--- 유니 코드를 사용 : 그래서

lcHttp.setRequestHeader "Content-Type", "text/html; charset=utf-8"

+0

응답 해 주셔서 감사합니다. 나는 내가 FoxPro를 사용하여 붙어 있다고 믿을 수 없다. 내가 알 수있는 한, 내가 돌아온 등장 인물들은 왜곡되어있다. 일부 구절은 이미 손으로 번역되었으며, 비록 어느 누구도 나에게 '적절하게'표시되지는 않지만 (나는 중국에 있지 않습니다), 동일한 문구를 통해 다시 번역하려고 할 때 문자가 닫히지 않습니다. 구글. WinHttp.WinHttpRequest.5.1을 사용하는 경우 –

+0

인코딩을 설정했는지 확인하십시오. objWinHttp.setRequestHeader "Content-Type", "text/html; charset = UTF-8" – 1054211

+0

아니요. 나는 여전히 이것을 얻는다. : Çøòò¨¨Òå & ÐÔÖÊ 분명히 같은 문자 집합이 아니다. ( –