问题标签 [transliteration]

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 投票
3 回答
2690 浏览

unicode - Unicode 拉丁字母“WITH STROKE”的音译

将规则"NFD; [:Nonspacing Mark:] Remove; NFC"输入ICU Transliterator demo,字符Ø( \u00d8== LATIN CAPITAL LETTER O WITH STROKE) 保持原样(即 STROKE 未被剥离)。

在非标记空间列表(Category Mn) 中,我找不到任何COMBINING DIAGONAL STROKE类似于COMBINING SHORT STROKE OVERLAY( \u0335) 或COMBINING LONG STROKE OVERLAY( \u0336) 的名称。

但是,我确实找到了COMBINING SHORT SOLIDUS OVERLAY( \u0337) 和COMBINING LONG SOLIDUS OVERLAY( \u0338)。o它们看起来很相似,但在我的浏览器中与和结合使用时会呈现出更粗的线条O

我访问的Unicode 数据\u00d8不提供该字符的分解。

同时,ICU Collat​​or Demo将使用 Primary (Level = 1 = Base Letter) Collat​​or 将 、 、 、 和 中的每一个整理到ø相同oØ代码点Oo\u0337O\u0338

这是否意味着 Demo 中使用的 Collat​​or 的语言环境已设置为以 Unicode 规范没有提及的方式识别基本字符?

如果是这样,如果我想从LATIN [CAPITAL, SMALL] LETTER *音译字符中删除笔划,是否需要自定义基于规则的音译器?

0 投票
14 回答
57119 浏览

php - PHP 中的西里尔字母音译

如何将西里尔字符音译成拉丁字母?

这个音译 PHP 扩展可以很好地做到这一点,但我无法将它安装在我的服务器上。

最好有相同的实现,但在 PHP 中。

0 投票
2 回答
1632 浏览

algorithm - 基于音译的单词查找的高效数据结构/算法

我正在寻找一种有效的数据结构/算法来存储和搜索基于音译的单词查找(就像谷歌做的那样:http ://www.google.com/transliterate/但我没有尝试使用谷歌音译 API)。不幸的是,我正在尝试使用的自然语言没有实现任何 soundex,所以我只能靠我自己。

对于一个开源项目,我目前使用普通数组来存储单词列表并动态生成正则表达式(基于用户输入)以匹配它们。它工作得很好,但是正则表达式比我需要的太强大或资源密集。例如,如果我尝试将它移植到手持设备上,我担心这个解决方案会消耗太多电池,因为使用正则表达式搜索数千个单词的成本太高。

对于复杂的语言,必须有更好的方法来实现这一点,例如拼音输入法是如何工作的?关于从哪里开始有什么建议吗?

提前致谢。


编辑:如果我理解正确,这是@Dialecticus 建议的-

我想从具有 3 个字符的Language1音译为具有 6 个字符的Language2。由于每种语言拥有的字符数量和它们的音素不同,通常不可能定义一对一的映射。a,b,cp,q,r,x,y,z

让我们假设这里的语音是我们的关联数组/音译表:

我们在Language2的普通数组中也有一个有效的单词列表:

如果用户键入ac,则可能的组合px, py, pz, qx, qy, qz在音译步骤 1 之后变为。在步骤 2 中,我们必须在有效单词列表中进行另一次搜索,并且必须消除除px和之外的每个人qy


我目前正在做的与上述方法没有什么不同。我没有使用音译表进行可能的组合,而是构建了一个正则表达式[pq][xyz]并将其与我的有效单词列表匹配,该列表提供输出pxqy.

我很想知道是否有比这更好的方法。

0 投票
0 回答
1088 浏览

emacs - Emacs 代码页问题:Terminus 字体、utf-8 和 cyrillic-translit 输入

我喜欢cyrillic-translitEmacs 的输入法。但是,在我将美妙的Terminus设置为我的默认字体后,俄语字符出现在 Arial 或其他内容中(无论如何它不是 Terminus)。

我该如何解决?将默认字体设置为 UTF-8(Emacs 等效"-outline-Terminus-normal-normal-normal-mono-16-*-*-*-c-*-iso10646-1")没有帮助。我想这可能意味着 Terminus 缺乏像样的 UTF-8 支持?

无论如何,我正在使用以下代码片段在西里尔语转译输入法和“正常”模式之间切换:

现在 - 有没有办法让片段不仅切换到cyrillic-translit而且在我按 F9 时切换代码页?

换句话说,如何让它在"-outline-Terminus-normal-normal-normal-mono-16-*-*-*-c-*-iso8859-1"(拉丁文)和"-outline-Terminus-normal-normal-normal-mono-16-*-*-*-c-*-iso8859-5"(俄文)之间切换字体?

这是我(作为非程序员)能想到的唯一解决方法。也欢迎任何其他想法。谢谢!

0 投票
2 回答
1932 浏览

search - Solr、特殊字符和拉丁文到西里尔字符的转换

我正在尝试使用 Solr(或 Lucene)设置一个搜索引擎,它可以在拉丁文中包含带有特殊字符的文本,(特殊字符将包括 Ö 或 Ç 作为示例)或西里尔字符(示例包括 Б 或 б 和 Ж ж) .

无论如何,我正在尝试找到一种解决方案,以允许我搜索带有这些字符的单词,但对于键盘上没有键的用户...

例子是(在这里编造词,希望不会冒犯任何人):

  • 搜索“书”时会找到“BÖÖK”
  • 搜索 XRAY 时会找到“ЖRAY”
  • 如果搜索 ZRAY、ZHRAY 或 žray,也会找到“ЖRAY”(有关将 Cylric音译为拉丁字符的信息,请参阅GOST 16876-71 。

那么,我该怎么做呢?我的一些理论是:

  • 允许为每个原始字符串存储多个文本字段,一个以原始形式存储,一个在第一次音译中(例如,将 Ö 转换为 O,将 Ж 转换为 ž,还有 X),然后一个在第三种形式(从ž到z或zh)->意味着我将存储大量数据......
  • 按原样存储在 solr 中,让 Solr 发挥作用 -> 不知道这将如何运作......在 solr 中看不到任何东西来做到这一点
  • 魔法子弹我还没找到……

有任何想法吗?以前有人试过吗?

0 投票
2 回答
1220 浏览

string - 批量转换用户输入的字符

好的,基本上我想要一个简单的批处理程序以这样的方式将 X 字符更改为 Y 字符

我查找了字符串和其他变量技巧,但它不起作用。这是我尝试过的,您可以在“codeb”上看到我尝试了另一种方法

这基本上是我尝试将所有输入字符拆分为单独变量的方式。

如果您的感觉....无聊下面是翻译的确切转换

基本上我应该能够将这个“v'rxg”“粘贴”到批处理中并按回车键,然后显示“批处理”

0 投票
1 回答
1708 浏览

java - Java Swing 项目中的 Google 音译 API

我正在使用 Java Swing 进行音译项目。它可以访问互联网,但我无法设置它。我们如何做到这一点?我们需要下载 Google API 库还是只需要一个函数调用就可以了?

以下是一些有用的音译链接:

Google 音译 API 开发人员指南

用于 Java 的 Google API 库可供下载

(我认为它拥有谷歌的所有API库:翻译、音译、搜索等)

我花了很多时间,但我找不到如何设置音译 API,甚至在 SO。

0 投票
3 回答
1896 浏览

c++ - 在 C++ 中处理 Unicode 字符

我有一个文件,其中包含未说明编码的 Unicode 文本。我想扫描这个文件,寻找 U+0600 到 U+06FF 范围内的任何阿拉伯代码点,并将每个适用的 Unicode 代码点映射到一个 ASCII 字节,这样新生成的文件将由纯 ASCII 字符组成,所有代码点都在 128 以下。

我该怎么做呢?我尝试以与阅读 ASCII 相同的方式阅读它们,但我的终端显示 ??,因为它是一个多字节字符。

注意:该文件由 Unicode 字符集的子集组成,子集大小小于 ASCII 字符的大小。因此,我能够从这个特定的 Unicode 子集到 ASCII 进行 1:1 映射。

0 投票
1 回答
570 浏览

c# - 使用 Newtonsoft.Json 在 C# 中反序列化 Google 音译

作为初学者,我尝试反序列化 Google 直译器返回数组。这是一个像这样的 JSON 数组:

太棒了!

这是我用于反序列化的 c# 类:

最后:

我得到的是:

知道有什么问题吗?

0 投票
5 回答
1079 浏览

unicode - 从字符串中删除所有非 ASCII

我的问题很笼统——我想问一下编程语言中是否有任何特殊模块或现成的程序可以让我完成我的任务。

有没有方便的方法(除了用多个替换语句编写自己的函数)自动将所有国家字符替换为对应的字母?例如,我想将æ替换为ae,将ä替换为a,将ę替换为e等等。

如果不可能准备通用功能,那么当前使用的编程语言中是否有任何现成的功能,只需将允许的字符限制为标准拉丁字母表中的字符,就可以删除这些字符?