Winapi 泰国组合字符

Winapi 泰国组合字符,winapi,windows-7,unicode,windows-vista,thai,Winapi,Windows 7,Unicode,Windows Vista,Thai,最近,我正在处理一个在开发中的文件夹中打开泰文命名文件的问题。通常,我们通过以下方式实现: Java:ProcessBuilder带有“资源管理器/n、/select、/folder/อักษรไทย.jpg“ Windows C API:ShellExecuteW withL“explorer”L“open”L”/n、/select、/folder/อักษรไทย.jpg“ 它们都适用于WinXP系统,但在WindowsVista和Windows7中失败 奇怪的是,当我从文件名中删除组合字符

最近,我正在处理一个在开发中的文件夹中打开泰文命名文件的问题。通常,我们通过以下方式实现:

Java:ProcessBuilder带有
“资源管理器/n、/select、/folder/อักษรไทย.jpg“

Windows C API:ShellExecuteW with
L“explorer”L“open”L”/n、/select、/folder/อักษรไทย.jpg“

它们都适用于WinXP系统,但在WindowsVista和Windows7中失败

奇怪的是,当我从文件名中删除组合字符时,它们都可以正常工作:从อักษรไทย 到อกษรไทย.

我还尝试过其他UTF8语言,如中文和日文,它们的字符集中都没有组合字符

另外,Java awt函数`Desktop.open(File)可以很好地打开这样的文件夹或合并泰语字符的文件,但不幸的是,我还没有找到这样的函数,可以在文件夹中选择文件


您对差异有何看法?

查看文件名的二进制文件。然后,将其与传递给
ShellExecuteW
的文件名的二进制文件进行比较。它不应该匹配。如果匹配,则表示这是Windows Vista/7中的错误。感谢您的回复。是的,我也尝试过使用另一个API ShellExcecuteExW,并将文件名的确切Unicode字节传递给Win API的参数,但它仍然不接受组合字符。此外,当我尝试Firefox下载组件中的“打开包含文件夹”和Chrome下载组件中的“显示文件夹”时,它们都可以在Win7中正确打开合并路径。Win7可以通过“打开文件位置”正确打开shotcut/link文件。我想知道这些函数使用哪些API。请尝试
ShellExecuteW(hWnd,NULL,L“要打开的目录的完整路径”,NULL,NULL,SW\u SHOWNORMAL)