바이트 배열 (워드 문서의 텍스트 포함)에서 LPTSTR (wchar_t *) 객체로 변환하는 데 문제가있는 것처럼 보입니다. 코드가 실행될 때마다 원치 않는 유니 코드 문자가 반환됩니다.바이트 배열의 내용을 wchar_t *
어딘가에서 적절한 호출을하지 않거나 변수를 적절히 사용하지 않기 때문에 그 점을 알 수 있습니다. 그러나이 방법에 접근하는 방법은 확실하지 않습니다. 바라건대 여기 누군가가 올바른 방향으로 나를 안내 할 수 있기를 바랍니다.
먼저 Microsoft Word를 열고 문서의 텍스트를 바이트 배열로 변환하기 위해 C# 코드를 호출합니다. 다음과 같이 문서의
byte document __gc[];
document = word->ConvertToArray(filename);
내용은 다음과 같습니다
다음 문자열 될 수있을 테니까요{84, 101, 115, 116, 32, 68, 111, 99, 117, 109, 101, 110, 116, 13, 10}
: "테스트 문서".
우리 다음 단계는 우리가 메모리 할당 시작 라인을 실행하면
byte __pin * value;
value = &document[0];
LPTSTR image;
image = (LPTSTR)malloc(document->Length + 1);
을 LPTSTR 변수에의 바이트 배열을 저장하기위한 메모리를 할당하고, 우리의 영상 변수는 무리 가득 도착 원치 않는 유니 코드 문자 :
췍췍췍췍췍췍췍췍﷽﷽����˿於潁
그리고 우리가 방어 적이기 할 모든 데이터를 통해 전송하는
memcpy(image,value,document->Length);
단지 더 원하지 않는 유니 코드 문자가 표시됩니다
:
敔瑳䐠捯浵湥൴촊﷽﷽����˿於潁
나는 우리가 겪고있는 문제를 파악하는 방법 우리가 바이트 배열의 값을 저장하는, 또는 아마도 우리가 데이터를 복사 할 때 관련된 중 하나입니다 바이트 배열에서 LPTSTR 변수로. 내가 잘못하고있는 것을 설명하는 데 도움이되거나, 올바른 방향으로 나를 가리켜 줄 수있는 점에 크게 감사하겠습니다.
"코드가 실행될 때마다 유니 코드 문자가 많이 나옵니다."Windows에서 wchar_t는 유니 코드가 될 수 있다는 것을 알고 있습니까? Windows는 wchar_t 인코딩으로 UTF-16을 사용합니다. – bames53
모든 문자는 유니 코드 문자입니다. – melpomene
'memcpy'는 char와 wchar_t 사이의 변환에 적절한 방법이 아닙니다. 변환을 전혀하지 않습니다. – bames53