问题标签 [non-unicode]

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

sql-server - REPLACE 函数不替换所需的字符串

在创建基于单个表的视图时,我想替换所有出现的特定单个字符串(例如:'^' 或 ',')。但 id 不会替换所有数据行中所需的单个字符。当我查询新创建的视图时,我就知道了。所有字段都有 varchar 数据类型。

这是一个特定的示例,其中没有替换愿望字符串MAINTENANCEà ,¿ENHANCED 我尝试了以下但没有成功。

我还执行了简单的测试,我从需要替换的字符串中复制了逗号(请参阅下面的代码)

如果 ',' = '‚' print 1 -- 不返回 TRUE。第一个逗号是我在 REPLACE 函数的第二个参数中键入的那个,第二个逗号是从上面的字符串中复制的那个。

如果 ',' = ',' 打印 1 -- 返回 TRUE。我在 REPLACE 函数的第二个参数中键入的两个逗号。

显然问题在于我在数据源中的逗号被平等对待。虽然下面的函数显示两者都是 varchar。(https://blog.sqlauthority.com/2013/12/15/sql-server-how-to-identify-datatypes-and-properties-of-variable

部分可以使用下面的代码解决

输出 ——逗号被替换。这是预期的。MAINTENANCEÿENHANCED

但它在我有超过 1 个逗号的情况下不起作用,无论我是从数据源复制它还是自己输入它。('“维护”“增强”)

输出 ——逗号又回来了。是问题。只有一个(第一个)逗号被替换。AINTENANCE™ 增强型

附言

请参阅下面的答案,我解决了上述所有问题,除了我需要弄清楚如何防止删除特殊字符(如问号、括号等)。

0 投票
0 回答
109 浏览

unicode - Microsoft Keyboard Layout Creator:安装后显示的变音符号错误

我正在尝试在基于德语的 Microsoft Keyboard Layout Creator 中为自己制作一个键盘,并带有两个额外的变音符号:一个 caron(字符上方的楔形)和一个 macron(字符上方的破折号)。我将这些定义为死键。在“测试键盘布局”中一切正常。

一旦我构建和安装,它适用于长音(破折号),但长音显示为短音,即元音上没有一个小楔形,我得到一个半圆形。

我确实在验证日志中遇到了如下错误,但是a)在实际日志中,字符显示正常(即问题不是编码,它设置为UTF-8)和b)我也明白了macron 的错误相同,但该错误有效。

错误如下:“死键 ̌ (U+030c) 与 I (U+0049) 组合时返回 Ǐ (U+01cf),但 Ǐ (U+01cf) 不在默认系统代码页 (1252) 上您指定的德语(德国)语言。这可能会导致非 Unicode 应用程序出现兼容性问题。”

我还尝试将自定义键盘的语言设置为美国和其他一些语言,以防万一,但看起来美国和德国使用相同的代码页,所以没关系。

我的怀疑是它与语言代码页或 unicode 范围或其他东西的限制有关,但后来似乎有人设法让它与美国基地(相同的代码页)一起工作,所以......我不知道。(然后为什么我可以从其他文本中复制/粘贴它并从字符映射中插入它?问题可能直接在键盘驱动程序中吗?)

感谢所有想法!

编辑:现在是第二天,现在连虚线字符都不再起作用了!重新装了键盘,什么都没有ò_ó

0 投票
1 回答
60 浏览

google-cloud-platform - 将“.eml”文件传输到 Google Cloud Platform 时出现 UnicodeEncodeError(Linux 上的 gsutil v4.6.1)

使用该命令将文件从 Linux 系统传输到 Google Cloud Platformgsutil cp时,在尝试处理包含未编码的非英文字符的内容(不仅仅是文件名!)时,它会在一些旧的“.eml”文件中失败统一码。

尝试的命令是:

错误消息是:

gsutil rsync给出了一个非常相似的错误。位置 22881 (0x5961) 位于多部分电子邮件源文件的末尾。以下显示了十六进制转储文件内容:

我们在位置 0x5961 处看到字节“0xa8”,如错误消息所示,这是问题的根源。由于某种原因gsutil试图对文本进行编码。在支持中文字符的终端中打开文件时,我们会看到:

Big-5编码时,第一个汉字“-”是0xa843。一个简单的解决方法是将文件扩展名重命名为“.eml”以外的其他名称,例如“.eml.bak”,这样gsutil就不会处理文件内容。遗憾的是,在批量传输时很难提前知道是否存在这种非英文字符的文件,并且整个过程可以多次停止。

以下是完整的错误消息:

Linux 系统是 Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-76-generic x86_64)。