我目前正在开发一个与 Lua 相关联的 C++ 应用程序,该应用程序与 Flash 相关联(按此顺序)。我目前的目标是wchar_t
通过 Lua 将 s 从 C++ 转换为 Flash。我很想知道我如何能做到这一点!
如果需要任何其他信息,请询问,我会尽力提供
我试过的
据我了解,Lua 不是 Unicode 的粉丝,但它仍然应该能够从我的 C++ 应用程序接收字节字符串。我想必须有一种方法可以将这些字节传递给 Flash,然后渲染出我想要的 Unicode。所以到目前为止我所做的:
C++:
//an example wchar_t*
const wchar_t *text = L"Test!";
//this function pushes a char* to my Lua code
lua.PushString((char*)text); //directly casting text to a char*... D:
卢阿:
theString = FunctionThatGetsWCharFromCpp();
flash.ShowString(theString);
闪光:
function ShowString(theString:String)
{
myTextField.text = theString;
}
现在这里的结果是myTextField
只显示“T”。这对我来说很有意义。从wchar_t
to的转换char
最终会char
用一些零填充 s ,特别是因为 "T" 并没有真正利用 a 的两个字节wchar_t
。快速查看文档会产生:
lua_pushstring
字符串不能包含嵌入的零;假设它在第一个零处结束。
所以我做了一个小测试:
C++:
//prefixing with a Japanese character
//which will use both bytes of the wchar_t
const wchar_t *text = L"たTest!";
Flash 文本框现在显示:“_0T”,3 个字符。完全有道理,日语字符 + T 的 2 个字节,然后终止。
我了解发生了什么,但我仍然完全不确定如何解决这个问题。而且我真的不确定要搜索什么。是否有一个特定的 Lua 函数可以用来将一堆字节从 C++ 传递给 Lua(我读过一些lua_pushlstring
经常用于此目的的地方,但它也以第一个零终止)?是否有可以接受这些字节的 Flash 数据类型,然后我需要进行某种转换以将它们转换为可读的多字节字符串?或者这真的不可能吗?
注意:
我不太熟悉 Unicode 和代码页等等,所以我不太确定是否还有一个步骤我需要在 Flash 中指定正确的编码,以便我可以得到正确的输出 - 但是当我到达那里时我很高兴穿过那座桥,但是如果有人在这里也有任何见解,那就太好了!