- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
您好,我有一个包含日语文本的文件,保存为 unicode 文件。
我需要从文件中读取信息并将信息显示到标准输出。
我正在使用 Visual Studio 2008
int main()
{
wstring line;
wifstream myfile("D:\sample.txt"); //file containing japanese characters, saved as unicode file
//myfile.imbue(locale("Japanese_Japan"));
if(!myfile)
cout<<"While opening a file an error is encountered"<<endl;
else
cout << "File is successfully opened" << endl;
//wcout.imbue (locale("Japanese_Japan"));
while ( myfile.good() )
{
getline(myfile,line);
wcout << line << endl;
}
myfile.close();
system("PAUSE");
return 0;
}
这个程序生成了一些随机输出,我在屏幕上没有看到任何日文文本。
最佳答案
哦, child 。欢迎来到有趣的字符编码世界。
您需要知道的第一件事是您的控制台在 Windows 上不是 unicode。您在控制台应用程序中看到日语字符的唯一方法是您 set your non-unicode (ANSI) locale对日语。这也会使反斜杠看起来像日元符号,并为使用 ANSI Windows API 的程序断开包含欧洲重音字符的路径(应该在 Windows XP 出现时已被弃用,但人们仍然使用这个天...)
因此,您首先要做的是构建一个 GUI 程序。但我会将其作为练习留给感兴趣的读者。
其次,有很多方式来表示文本。您首先需要弄清楚正在使用的编码。是UTF-8吗? UTF-16(如果是的话,是小端还是大端?) Shift-JIS? EUC-日本?如果文件是小端 UTF-16,则只能使用 wstream
直接读取。即使那样你也需要 futz with its internal buffer .除 UTF-16 之外的任何内容,您都会得到无法读取的垃圾。这也只是 Windows 上的情况!其他操作系统可能有不同的 wstream
表示。最好根本不要使用 wstream
。
因此,我们假设它不是 UTF-16(为了完全通用)。在这种情况下,您必须使用 wstream
将其作为字符流读取 - 不是。然后,您必须将此字符串转换为 UTF-16(假设您使用的是 Windows!其他操作系统倾向于使用 UTF-8 char*
)。在 Windows 上,这可以通过 MultiByteToWideChar
来完成。 .确保您传入正确的代码页值,CP_ACP
或 CP_OEMCP
几乎总是错误的答案。
现在,您可能想知道如何确定哪个代码页(即字符编码)是正确的。简短的回答是你没有。没有表面上看文本字符串并说出它是哪种编码的方法。当然,可能会有提示 - 例如,如果您看到 byte order mark ,很可能是 unicode 的任何变体造成了这种影响。但一般情况下,你必须由用户告诉你,或者尝试猜测,猜错了靠用户纠正你,或者你必须选择一个固定的字符集,不要尝试支持任何其他。
关于c++ - 无法从文件中读取 unicode(日语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4954445/
我正在尝试在日本网站上的 flash 动态文本字段上实现抗锯齿。这些文本字段的内容不是固定数据。 我没有嵌入字体的选项,因为嵌入所有字符会导致非常重的 swf 文件(3000kb+ 仅用于字体)。这是
我正在创建一个游戏。我有一些带有文本的用户界面。最近我们想添加日语版本,但我遇到字体问题。我使用 stb_freetype 来光栅化字体,并且我支持 Unicode,所以这应该不是问题。但大多数字体似
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
我知道我的问题已经在这里有了解决方案。但我只想具体说明我的情况。我有一个 json 对象,其中包含非英语字符。 例如。 {“my_chinise_name”:“吉米”}。 该对象将通过 javascr
我刚刚安装了 Tesseract OCR 并在运行命令 $ tesseract --list-langs 后输出仅显示 2 种语言,eng和osd 。我的问题是,如何加载另一种语言,在我的例子中是日语
在哪里可以获得与日语汉字、平假名和片假名字符对应的 ASCII 代码列表。我正在做一个java函数和Javascript来确定它是否是日语字符。它的 ASCII 码范围是多少? 最佳答案 ASCII代
在我的 Rails 应用程序中,我有一个像这样的文本字段 @disabled_field %> 我正在使用 jQuery 来验证此文本字段仅接受 half width katakana字符(Unic
我有在表单中添加网站选项的功能。 用户可以在这里写域/url,这个域/url 可以是英语也可以是日语,如下所示。 www.google.com www.南极星.com I am using follo
我遇到了日语问题。我有一个允许用户搜索数据的表格。当用户输入要搜索的字符串并按下“Enter”键时,搜索功能就会执行。我的代码是: $('#formSearch input').keyup(funct
我是 Java 脚本的新手。我写了一个正则表达式,它允许用户名或电子邮件地址作为某些条件的输入,例如应接受 6-50 个字符不允许空格或空白不应允许 2 个 @ 符号并且可以接受超过 1 个 .(点)
您好,我有一个包含日语文本的文件,保存为 unicode 文件。 我需要从文件中读取信息并将信息显示到标准输出。 我正在使用 Visual Studio 2008 int main() {
我正在使用在 http://mobile.tutsplus.com/tutorials/android/android-sdk-using-the-text-to-speech-engine/ 中找到
(我正在开发一个网站来抓取 ASP.NET 中的其他网站内容。我能够正确获取内容,但如何根据该内容识别使用的是哪种语言。例如英语、印地语、中文, 日语等 我使用了以下代码。 HttpWebReques
在 TextBox 中,我无法捕获具有特殊 IME 的语言(例如日语和韩语)的击键,因为 IME 不断地决定不同的字符或音节。实际上,大多数情况下 KeyUp/KeyDown 都不会触发(如果 IME
我有一个包含日语单词的数据库。我很困惑,因为这个查询: SELECT japanese FROM my_table where japanese = 'する' 返回两个结果: ずる する 我试图查看
我想将 CSV 文件解析为 JSON 文件。我已经解析了它,但它没有得到日语字符。 我正在使用 Papa Parser 将 CSV 解析为 JSON。 这是我的代码:- Papa.parse("htt
我有一个 C# winform 应用程序,它安装在日文 windows 7 上。一些标签以非常宽的字体显示,导致它们无法匹配 from 的大小。 经过一些研究,我被告知这可能是半角/全角问题。有没有办
MySql 全文搜索是否适用于非拉丁语言? (希伯来语、阿拉伯语、日语……) 添加:做了一些测试...希伯来语有一些问题。示例:名称 מוסəנזון 的发音与 מושəנזון 相同,但搜索不会找到
我使用下一个代码从句柄为 hFile 的文件中读取所有元素行得通,而且我用 GetFileSize(hFile, NULL) 得到了它的大小. _TCHAR* text = (_TCHAR*)mall
验证按预期进行,但消息仅以英语显示良好。我使用自己的日语消息。 问题是我收到了日语的乱码验证消息。我将validation-api-1.0.0.GA.jar与hibernate-validator-4
我是一名优秀的程序员,十分优秀!