用C从文件中读取unicode字符

2023-12-04

我需要从文件中读取 Unicode 字符。我唯一需要做的就是提取它们的 Unicode 编号。我使用 CodeBlock Mingw 在 Windows XP 上运行。

我正在做这样的事情

#define UNICODE
#ifdef UNICODE
#define _UNICODE
#else
#define _MBCS
#endif

    #include <stdio.h>
    #include <stdlib.h>
    #include <wchar.h>
    int main()
    {
        wchar_t *filename=L"testunicode.txt";
        FILE *infile;
        infile=_wfopen(filename,L"r");
        wchar_t result=fgetwc(infile);
        wprintf(L"%d",result);//To verify the unicode of character stored in file,print it   
        return 0;
    }

我得到的结果一直是 255。

testunicode.txt 存储在 Encoding=Unicode 中(通过记事本创建)

最后的任务是从一个文件中读取,该文件可以包含任何语言的字符,但 wchar_t 只有 2 个字节,所以它能够获取所有可能的语言字符的 unicode 吗?

需要你的帮助...



谢谢大家的回复。

现在我已经更改了代码。

#define UNICODE
#ifdef UNICODE
#define _UNICODE
#else
#define _MBCS
#endif

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
int main()
{
    wchar_t *filename=L"testunicode.txt";
    FILE *infile;
    infile=_wfopen(filename,L"r");
    wchar_t  b[2];
    fread(b,2,2,infile);//Read a character from the file
    wprintf(L"%d",b[1]);
    return 0;
}

它打印正确的 UTF 16 代码。使用它的项目需要读取世界上不同语言的字符。那么UTF-16会后缀还是我们应该将存储文件的编码更改为UTF-32呢?另外,这里 wchar_t 是 2 个字节,对于 UTF-32,我们需要一些 4 个字节的数据类型。如何做到这一点?

再次感谢你的回复........


好吧,您问题中的代码仅读取文件的第一个字符,因此您必须实现某种循环构造才能处理该文件的全部内容。

Now, fgetwc()正在返回255 (0xFF)出于三个原因:

  • 你没有采取字节顺序标记考虑到文件的内容,因此您最终会读取它而不是实际的文件内容,

  • 您没有在中指定翻译模式标志mode论证_wfopen(),所以默认为text and fgetwc()因此尝试读取多字节字符而不是宽字符,

  • 0xFF(a的第一个字节小尾数法 UTF-16 BOM) 可能不是程序当前代码页中的前导字节,因此fgetwc()返回它而不进行进一步处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用C从文件中读取unicode字符 的相关文章

  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何使用来自 Microsoft-Windows-NDIS-PacketCapture 提供程序的实时 ETW 事件?

    更大的问题是一般如何使用实时 ETW 网络堆栈事件 但我特别感兴趣Microsoft Windows NDIS PacketCapture 提供程序 所有其他网络堆栈提供程序都部分工作 但 NDIS PacketCapture NDIS P
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥

    正如标题所示 我想在不使用 OpenSSL 或任何其他第三方工具的情况下导出我的私钥 如果我需要一个 cer文件或 pfx我可以通过 MMC 或 PowerShell 轻松导出这些文件pkiclient但我找不到获取私钥的方法 https
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • 如何通过 JPA 使用多个数据库?

    我的 Web 应用程序中需要使用 jpa 进行两个或两个以上连接 要使用不同的数据源 请添加多个持久性单元 例如 source 1 and source 2 in persistence xml并创建多个EntityManagerFacto
  • 将 varchar 类型转换为日期

    我想更改 PostgreSQL 数据库中的特定列character varying打字到打字date 日期格式为yyyy mm dd 我尝试这样做 alter table table name alter column date time
  • 使用 VBA 确定选定的 Outlook 日历日期

    我正在尝试使用用户在其日历上选择的日期填充 Outlook 日历约会模板的约会开始日期 有人可以提供 VBA 代码 让我可以确定用户在日历上选择的日期 如果有 吗 您可能会发现选择Explorer 类的属性很有帮助 它返回一个 Select
  • 当值与另一列匹配时回填 Pandas 系列中的值

    我有一个像这样的数据框 import numpy as np raw data surface np nan np nan round square city San Francisco Miami San Francisco Miami
  • Lambda 捕获作为 const 引用?

    是否可以通过捕获constlambda 表达式中的引用 我希望下面标记的作业失败 例如 include
  • Google Cloud SQL 现在为只读

    我们遇到了 Google Cloud SQL 第二代 问题 大多数插入都会失败并出现以下错误 MySQL 服务器正在使用 read only 选项运行 因此它无法执行此语句 我们没有做任何改变 这突然开始发生 尝试重新启动 Google C
  • 如何在CSS中使3个div倾斜

    如何制作如图所示变形的 3 div 我做了这个 cars width 100 height 500px car width 33 33333333 height 100 background 3498db position relative
  • 捕获控制台退出 C#

    我有一个包含很多线程的控制台应用程序 有些线程监视某些条件并在满足条件时终止程序 这种终止可能随时发生 我需要一个可以在程序关闭时触发的事件 以便我可以清理所有其他线程并正确关闭所有文件句柄和连接 我不确定 NET 框架中是否已经内置了一个
  • 反序列化 MandrillApp Webhook 响应

    MandrillApp API 据称会发送一个JSON 编码的消息数组与哑剧类型application x www form urlencoded 我遇到的问题是收到的数据如下 mandrill events 5B 7B 22event 2
  • 如何在 .NET 中创建包含“System”的命名空间而不发生冲突?

    有时我在 C 中创建了一个包含 System 的命名空间 我不知道问题在 VB NET 中是否相同 当我从不同的 DLL 中包含它时 它会变得疯狂并与包含 System 的所有内容发生冲突 这会导致疯狂的错误 如下所示 类型或命名空间名称
  • 在没有锁定机制的情况下,不同线程对 List 进行读取和“设置”操作是否安全

    迭代 a 是非常不安全的List 正在执行添加 删除由另一个线程进行操作 这就是为什么我们需要需要CopyOnWriteArrayList public static void main String args throws Interru
  • 如何检测谷歌地图信息窗口中的按钮点击[重复]

    这个问题在这里已经有答案了 使用 Google 地图 V3 我正在尝试向谷歌地图上的信息窗口添加一个按钮 信息窗口和按钮按预期显示 我正在尝试捕获按钮的 onclick 事件 这是我到目前为止所拥有的 var contentBtn p p
  • 使用 jQuery 求和每个函数而不使用全局变量

    我想添加一些具有相同类名的 HTML 元素 所以 使用 jQuery 的代码将是这样的 force each function a parseInt this html total forces html a 在此代码中 变量必须是全局的
  • 如何使用 php 将 VML 转换为 png

    我搜索了两天但只有一个解决方案矢量转换器这似乎不起作用 实际上我正在使用 InternetExplorer 的 excanvas 并希望将该图像保存为 png IE 提供 VML 但无法使用 PHP 将其转换为 png 我听说过将 VML
  • isolatedStorage异常:无法创建存储目录

    嗨 我必须在隔离空间中存储一些隐藏信息 为此 我使用 System IO Isolated 类 例如 IsolatedStorageFile isf System IO IsolatedStorage IsolatedStorageFile
  • MySQL 中缺少降序索引功能的解决方法

    我们的生产环境存在问题 该环境使用支持优先级的 jBPM 修改版本 目前的指数有 JBPM TIMER 1 JBPM TIMER DUEDATE PRIORITY 1 PRIORITY A 2 NULL NULL YES BTREE JBP
  • 输入 ENTER 后 Python input() 不起作用 - PyCharm

    我的Python代码很简单 print Username end user input password getpass Password 当我在 PyCharm 的终端上运行它时 输入用户名后 程序卡在第二行 我无法输入密码 如果我在调试
  • php regex,从html文档中提取电话号码正则表达式

    我正在尝试从不同的 html 页面中提取特定信息 基本上 该信息是一个 10 位数字 可能有不同的形式 例如 000 000 0000 000 000 0000 0000000000 please note that 000 000 000
  • 为什么可以在 Scala 中将递归 lambda 分配给非惰性 val?

    在下面的语句中 valf被定义为引用自身的 lambda 它是递归的 val f Int gt Int a Int gt if a gt 10 3 else f a 1 1 just some simple function 我已经在 RE
  • 用C从文件中读取unicode字符

    我需要从文件中读取 Unicode 字符 我唯一需要做的就是提取它们的 Unicode 编号 我使用 CodeBlock Mingw 在 Windows XP 上运行 我正在做这样的事情 define UNICODE ifdef UNICO