问题标签 [codepages]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
418 浏览

c - 从 shell 脚本确定当前代码页的最可靠方法是什么?

我想在运行时从 Unix shell 脚本确定环境的当前代码页。这样做最可靠的方法是什么?

我正在研究解析环境变量 $LC_ALL,但它并不总是设置为有用的值,而且它的格式似乎有所不同(可以是 < locale > 或 < locale >.< code page > 或 < locale > .<代码页>@<修饰符> 等...)。

有没有更好的办法?如果我从 C 中调用 nl_langinfo(CODESET),我基本上是在追求一个与我得到的外壳等效的外壳。

0 投票
2 回答
1373 浏览

c - isdigit 可以合法地依赖于 C 语言中的语言环境吗

在涉及 setlocale 的部分中,ANSI C 标准在脚注中指出,行为不受当前语言环境影响的唯一 ctype.h 函数是 isdigit 和 isxdigit。

isdigit 的 Microsoft 实现依赖于区域设置,例如,在使用代码页 1250 的区域设置中,isdigit 仅对 0x30 ('0') - 0x39 ('9') 范围内的字符返回非零值,而在使用代码页的区域设置中1252 isdigit 还为上标数字 0xB2 ('²')、0xB3 ('³') 和 0xB9 ('¹') 返回非零值。

Microsoft 通过使 isdigit 区域设置依赖于违反 C 标准吗?

在这个问题中,我主要对微软声称符合的 C90 感兴趣,而不是 C99。

附加背景:

Microsoft 自己的 setlocale 文档错误地指出 isdigit 不受区域设置的 LC_CTYPE 部分的影响。

涵盖 ctype.h 函数的 C 标准部分包含一些我认为模棱两可的措辞:

这些函数的行为受当前语言环境的影响。那些仅在不在“C”语言环境中时才具有特定于语言环境的方面的功能将在下面注明。

我认为这是模棱两可的,因为不清楚它试图对诸如 isdigit 之类的函数说什么,因为它没有关于特定于语言环境的方面的注释。它可能试图说这些函数必须被假定为依赖于语言环境,在这种情况下,微软的 isdigit 实现就可以了。(除了我之前提到的脚注似乎与这种解释相矛盾。)

0 投票
4 回答
6257 浏览

windows - 为什么不允许 UTF-8 作为“ANSI”代码页?

Windows_setmbcp函数允许任何有效的代码页...

(不支持的 UTF-7 和 UTF-8 除外)

好的,不支持 UTF-7 是有道理的:字符具有非唯一的表示形式,这会带来复杂性和安全风险。

但为什么不是 UTF-8?

据我了解,Windows API 函数的“ANSI”版本将其参数转换为 UTF-16,调用等效的“W”函数,并将输出中的任何字符串转换为“ANSI”。这是我一直在手动做的。那么为什么 Windows 不能为我做呢?

0 投票
1 回答
6783 浏览

delphi - 以编程方式更改 Windows XP 中的默认代码页?(来自德尔福)

谁能建议如何以编程方式更改默认的 Windows XP 代码页(我是从 Delphi 做的)?(这相当于进入控制面板 -> 区域设置 -> 非 Unicode 应用程序的语言)。

在这种情况下,我想切换到中文 (PRC),因此我正在写入以下注册表字符串: HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ ACP=936 MACCP=10008 OEMCP=936

(这正是在控制面板中更改非 Unicode 代码页下拉菜单所做的)。必须有另一个我需要更改的设置 - 我更喜欢使用 Win API 调用(如果可用)而不是自己写入注册表。

我也试过设置 HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language\ Default=0804 (Chinese PRC) 无济于事。

我不想更改“语言环境”本身,因为这也会更改时间/日期设置、分隔符等。

这是因为我正在使用一个需要渲染汉字的 ANSI 应用程序,并且我正在编写一个工具来自动切换系统显示字符(同时保持 UI 的其他方面不变)。

谢谢!

邓肯

0 投票
2 回答
1809 浏览

delphi - DELPHI:EEncodingError - windows xp 嵌入的代码页无效

嗨,我有一个在 windows xp pro、windows Visa、windows 7 上运行良好的应用程序

但是当我在嵌入的 windows xp 上运行它时它不起作用并给出以下错误:

EEncodingError - 无效的代码页

当应用程序是使用 Delphi 2006 制作时,它可以在 windows XP 嵌入式上运行

**当应用程序是用 Delphi 2010 制作的 **不能在 windows XP 嵌入式上运行****

0 投票
1 回答
1087 浏览

c# - Windows 服务和默认代码页/文化设置?

我正在编写一个服务,它将从目录中读取文件,读取文件的内容并处理内容。

我遇到了从文件中读取的瑞典字符的问题,因为它们在被读取时被服务翻译成“垃圾字符”。

有谁知道服务控制管理器正在使用什么默认代码页/区域性设置,或者您是否知道任何有关在 Windows 服务编程上下文中处理瑞典语字符的“最佳实践”的文章?

任何帮助表示赞赏。

0 投票
4 回答
1402 浏览

asp.net - 您如何在 ASP.NET 中转换来自国际 PC 的张贴“英文”字符?(前2205)

我有一个 WebForm 搜索页面,偶尔会受到国际访问者的欢迎。当他们输入文本时,它似乎是纯 ASCII az, 0-9 但它们以粗体打印,我的“是这个文本”逻辑无法处理输入。ASP.NET 中是否有任何简单的方法可以将等同于 AZ、0-9 的 Unicode 字符转换为纯旧文本?

0 投票
1 回答
1853 浏览

c# - 使用 ODBC ADO.NET 从 Db2 代码页 1252 读取数据 - 欧元 (€) 符号未正确检索

在 VS 2005 C# 中,在将欧元 (€) 符号插入 Db2 表时,它正确地存储了值。DISABLEUNICODE=1 参数有助于正确存储它。

但是当我们尝试从表中读取时,它会给出如下所示的垃圾字符。

“规格 GS 1”

相同的代码在 VB 6.0 ADO 中工作

请你帮助我好吗。


代码:

0 投票
1 回答
12060 浏览

c++ - 如何更改控制台字体?

我在 Windows XP 控制台中输出 Unicode 有问题。(Microsoft Windows XP [版本 5.1.2600])第一个代码是(来自http://www.siao2.com/2008/03/18/8306597.aspx


我的代码页是 65001(CP_UTF8)。除了Ⴂ,每个字母看起来都不错。但Ⴂ 看起来像正方形。控制台的默认字体“Lucida Console”没有该字母的字体。所以,我下载了一些其他可以正确渲染Ⴂ的字体,但我无法更改(Visual Studio 2005 项目)控制台字体。

我更改了 HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\FontName,但是当我检查 Prompt 的属性 -> 字体时,它设置为“Lucida Console”。有什么方法可以使用 API 更改控制台字体?

下一个代码是我尝试过的。但它不起作用。帮助。

PS:顺便说一句,当我在“代码标签”中放入“include < fcntl.h >”时,带有 <> (fcntl.h) 的部分消失了。我怎样才能把系统包括?

0 投票
1 回答
475 浏览

c# - 识别输入字符串的代码页

如何识别输入字符串的代码页,例如,如果我在 Cyrillic 中输入内容,它应该返回 windows-1251,当我将字符串输入中文时,它会返回其他代码页等