问题标签 [shift-jis]

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 回答
598 浏览

.net - 在 SHIFT_JIS 和 Unicode 编码之间转换是否有任何问题?

我听说 Unicode 和 SHIFT_JIS 代码之间存在(曾经是?)不明确的映射。这篇知识库文章在一定程度上证明了这一点。

所以问题是:如果我采用 SHIFT_JIS 编码的文本,将其转换为 Unicode 并返回,我会丢失任何数据吗?

详细信息:我说的是 Windows(XP 及更高版本)和 .NET(理论上依赖于 NLS API)。

0 投票
1 回答
1497 浏览

unicode - Shift-JIS 中 IBM 大型机上的日语 COBOL 代码;转移到PC后如何表示?

我们有一个日本客户,在大型机上拥有 COBOL 源代码。他声称大型机上的代码以 Shift-JIS2 表示(我们认为我们对此非常了解)。当该代码传输到 PC 时,最常用的编码是什么?我们向他发送了一个程序来处理该 COBOL 代码,但它似乎卡住了。客户不会直接给我们代码,所以实验很难。他的实验似乎表明了 UTF-8;我假设在 Shift-JIS2 中可编码的日文字符相应地转换为 Unicode 等价物。有人在这里有经验吗?

编辑:我认为我们解决了我们的谜团。客户(呃!)在 PC 上使用 CP-932(“ShiftJIS”),但他的 COBOL 程序在标识符中有日文字符,这就是我们的工具阻塞的原因。

编辑:跟进:有点惊喜。SHIFT-JIS 通常将我们认为的 ASCII 文本编码为所谓的“FULLWIDTH”字符,它们占用与东亚表意文字相同的屏幕空间;常规 ASCII 字符充当半角。所以,有一个 FULLWIDTH "A" , "B", ... "Z" 以及 FULLWIDTH "-"。显然,要处理日语 COBOL,我们的 COBOL 解析器不仅必须接受西方 ASCII,而且还必须接受全宽等价物,尤其是。FULLWIDTH 字母和令人惊讶的 FULLWIDTH HYPHEN 用于分隔 COBOL 标识符中的“字母”。

编辑:IBM Enterprise COBOL 允许在标识符中使用 DBCS 字符。哎呀!

0 投票
3 回答
1102 浏览

python - 如何使用非 utf-8 参数打开 URL

使用 Python,我需要通过查询字符串将非 utf-8 编码数据(特别是 shift-jis)传输到 URL。我应该如何传输数据?引用它?用 utf-8 编码?

谢谢

0 投票
2 回答
3809 浏览

perl - 如何使用 CRLF、NEL 线路终结器处理线路?

我需要使用 shift_jis 编码处理文件。但是,行终止符的格式我不熟悉。

我使用一般:

然而,它仍然在每条记录的末尾留下一个 CR。

终止这些类型的文件的正确方法是什么?

0 投票
0 回答
1426 浏览

ruby - 在 Ruby 1.8.7 中打开 SHIFT_JIS 文件

这是其中一件看起来应该很容易的事情,但我被困住了......

我需要打开一个以 SHIFT_JIS 编码存储的 CSV 文件并将其解码为 Unicode 并以 UTF-8 编码。听起来这在 ruby​​ 1.9 中非常简单,但我对我的生产 Rails 应用程序并没有特别的冒险精神,所以我需要坚持使用 1.8.7。

任何帮助,将不胜感激。

0 投票
1 回答
1972 浏览

php - 在 PHP 中使用 SHIFT_JIS 文本

我正在构建一个表单,它需要接受以 SHIFT_JIS 编码的字符,然后通过电子邮件将这些结果发送给收件人。我试图简单地从 $_POST 变量中捕获结果,然后将它们插入到这样的文本块中:

但这似乎不起作用(这并不让我感到惊讶)。这是我第一次尝试在 PHP 中处理非 ASCII 字符,我希望人们可以提出一些建议。也许我缺少一个对文本进行编码的简单函数。

另外,我可能会遇到任何其他潜在的陷阱吗?

谢谢。

0 投票
2 回答
6065 浏览

java - 如何检测文件的字符编码?

我们的应用程序从我们的用户那里接收文件,如果这些文件是我们支持的编码类型(即 UTF-8、Shift-JIS、EUC-JP),则必须验证这些文件,一旦验证了该文件,我们还需要将该文件保存在我们的系统中,并将其编码为元数据。

目前,我们正在使用JCharDet(它是 mozilla 字符检测器的 Java 端口),但有一些 Shift-JIS 字符似乎无法检测为有效的 Shift-JIS 字符。

有什么想法我们还可以使用吗?

0 投票
1 回答
793 浏览

encoding - 从自由类型(SHIFT JIS 编码)中检索指定的字形?

到目前为止,我使用纹理(位图字体)进行字体渲染,但我正在尝试让 freetype2 工作。我所有的字符串都是 SHIFT_JIS 编码的,我现在唯一的问题是从 freetype 获得正确的字形到正确的 SHIFT_JIS 位序列。但这似乎比我预期的要难。例如,“亜”的字符代码为“0x889F”(字节 1 设置为 136,字节 2 设置为 159) - 这是根据 SHIFT_JIS 编码的。所以我调用了这个函数:

然后尝试使用该字符码加载字形:

但我收到一些随机字形。这不可能是特定于字体的问题,因为我已经尝试了具有相同结果的不同字体(是的,它们提供了 shift-jis Charmap)。例如,“0”(零)应该在位置 0x0030 - 但实际上它在 0x002D。并非所有字符的恒定偏移量都为 3,否则不会有问题......我认为我的“FT_Load_Char”调用以错误的方式传递了 charcode 参数 - 但无法猜测它是如何正确的。已经尝试过:

但随后我收到另一个随机字形。那么,如果没有选择默认的charmap,我如何将charcode传递给FT_Load_Char?

任何建议都会非常有帮助。谢谢你。

0 投票
6 回答
1695 浏览

unicode - 节省空间的日语字符编码?

在我看来,一个常见的问题是:字符编码与位图字体相结合。大多数多语言编码在不同的字符类型之间有很大的空间,甚至还有很多未使用的代码点。因此,如果我想使用它们,我会浪费大量内存(不仅是为了保存多字节文本——我的意思是专门用于我的位图字体中的空格)——而且 VRAM 非常有价值......所以似乎唯一合理的事情是:在我的纹理上使用自定义映射,即 UTF-8 字符(这样就不会浪费空间)。但是:这项工作似乎与使用自己的专有字符编码相同(因此在我的纹理中也有自己的字符顺序)。在我的特殊情况下,我获得了 4096 个不同字符的纹理空间,并且需要字符来显示拉丁语言和日语(它与只支持通用 cjk 代码页的 utf-8 混为一谈)。有人遇到过类似的问题吗(我真的很想知道,如果没有的话)?如果已经有任何方法?

编辑:这里描述了同样的问题http://www.tonypottier.info/Unicode_And_Japanese_Kanji/但它没有提供如何将这些位图字体映射保存到 utf-8 空间效率的真正解决方案。因此,欢迎任何进一步的帮助!

编辑2:

非常感谢您的回答。对不起,我的问题描述得不够清楚。

我真正想解决的是:CJK Unicode 范围超过 20000 个字符。但是正确显示日语文本只需要大约 2000 个字符的子集。这些字符分布在从 U+4E00 到 U+9FA5 的范围内。所以我需要以某种方式将这些 Unicode 代码点(只有 2000 用于日语)转换为我创建的纹理的坐标(我也可以像我想要的那样对字符进行排序)。

即 U+4E03 是日文字符,但 U+4E04、U+4E05、U+4E06 不是。那么 U+4E07 也是一个日文字符。所以最简单的解决方案,我可以看到:在字符 U+4E03 之后在我的纹理中留下三个空格(或者在那里写上不必要的字符 U+4E04、U+4E05、U+4E06)然后写 U+4E07。但这会浪费太多纹理空间(20000 个字符,即使只需要 2000 个字符)。所以我希望能够只放入我的纹理:“...U+4E03,U+4E07...”。但是我不知道如何编写我的 displayText 函数——因为我不知道我想显示的字形的纹理坐标在哪里。会有一个哈希图或类似的东西,但我不知道如何存储这些数据(为每个字符编写类似 ...{U+4E03, 128}, {U+4E07, 129}...填充hasmap)。

对于问题: 1)没有特定的格式 - 所以我将自己编写 displayText 函数。2)没有理由反对 unicode - 它只是我的位图字体的 CJK 范围问题。3)我认为,这通常与平台和语言无关,但在我的情况下,我在 Mac OS X/iOS 上使用 C++ 和 OpenGL。

非常感谢您的帮助!如果您对此有任何进一步的想法,那真的对我有很大帮助!

0 投票
1 回答
2415 浏览

unicode - 在 C 中使用 iconv API

我尝试使用 iconv API 将 sjis 字符串转换为 utf-8。我已经成功编译了它,但是输出不是我所期望的。我的代码:

我只得到随机数。有任何想法吗?

编辑:我的输入是

输出应该是:0x88 0x9F

但实际上是:0x30 0x00 0x00 0x31 0x00 ...