我找到了很多关于 C# 中 Rust DLL 实现的 US-ANSI 字符串的信息,但这并不能解决 UTF-8 编码字符串的任何问题。
\n\n例如,"Br\xc3\xb6tchen"
一旦在 C# 中调用,就会产生"Br\xc3\x83\xc2\xb6tchen"
.
锈
\n\nuse std::os::raw::c_char;\nuse std::ffi::CString;\n\n#[no_mangle]\npub extern fn string_test() -> *mut c_char {\n let c_to_print = CString::new("Br\xc3\xb6tchen")\n .expect("CString::new failed!");\n let r = c_to_print;\n r.into_raw() \n}\n
Run Code Online (Sandbox Code Playgroud)\n\nC#
\n\n[DllImport(@"C:\\Users\\User\\source\\repos\\testlib\\target\\debug\\testlib.dll")]\nprivate static extern IntPtr string_test();\n\npublic static void run()\n{\n var s = string_test();\n var res = Marshal.PtrToStringAnsi(s);\n // var res = Marshal.PtrToStringUni(s);\n // var res = Marshal.PtrToStringAuto(s);\n // Are resulting in: ????n\n Console.WriteLine(res); // prints …
Run Code Online (Sandbox Code Playgroud) 我从第三方程序中获取了一个我无法控制的字符串.我的代码片段以HTML格式输出.这在英语中很好用,但在其他语言中它会以有趣的方式显示.例如,西班牙语的口音看起来很有趣,东方语言(即韩语)中的人物看起来很有趣.我很确定我需要做一些编码工作,以便所有语言都能正确显示.
我对编码的理解有点差,所以在发布真正的问题之前,我直观地认为:"如何在C#中将其编码为UTF-8",我希望通过更简单的方式对此事进行更多的了解.的问题.
我的问题是:我如何知道输入字符串的编码类型?在西班牙语中,当我得到一个口音时,它看起来像这样:"Acción",而不是"Acción".这是ANSI还是我在处理什么?
非常感谢提前!