最简单的下标数转换方法
Simplest way to convert subscript numbers
我们从不同的来源(图书馆系统)获取书名(编码可能不同,但主要是 utf8)。这些字符串显示在网络上并通过导出到 Endnote 和 RefWorks。 RefWorks(windows 报价系统)不接受 ANSI 以外的任何其他编码。
在RIS/Refworks导出,激活行
$smarty = iconv("UTF-8", "Windows-1252", $smarty);
示例字符串
Diphosphen-komplexes (CO) 5CrPhPPPhCr(CO) 5
确实突然切断了第一个下标字符(矩形)之后的所有内容。这些字符也未在 HTML 中正确打印,但此输出没问题,因为没有任何内容被切断。在 UTF-8 导出文件编码中,也没有任何内容被截断。尽管如此,Windows 软件无法读取 UTF-8。
最简单的解决方案是将任何下标数字转换为常规数字。那时一切都会很好。但是我找不到任何简单的解决方案。使用十六进制代码是我唯一能想到的。该解决方案也优先用于我们的 Solr 索引。
有人知道更好的解决方案吗?
示例字符串包含Private Use code points如U+E5F8。根据定义,没有标准赋予它们任何意义;它们的使用完全是通过私人协议进行的。因此,在不知道或推断所涉及的私人协议的情况下,不可能将它们转换成任何东西,或用它们做任何事情。一些系统使用专用代码点来表示一些符号,这些符号以某种特殊字体分配给这些点。知道那个字体是什么并检查它可能有助于找出协议。
转换需要以特别的方式单独编码,因为涉及到一个特别的协议。
“ANSI”,这里的意思是windows-1252,不包含任何下标字符。在化学式的上下文中,将下标数字替换为普通数字并没有改变含义,并且公式是可以理解的,虽然看起来不专业。
当转换为 HTML 格式(或其他富文本格式)时,您可以使用普通数字包裹在导致下标呈现的元素中(或以其他方式设置它们的样式)。 HTML 有 sub
元素,但它的实现因浏览器而异,而且质量往往很差,所以更好的方法是生成 <span class=sub>...</span>
并使用 CSS 来设置垂直位置和字体大小。
我们从不同的来源(图书馆系统)获取书名(编码可能不同,但主要是 utf8)。这些字符串显示在网络上并通过导出到 Endnote 和 RefWorks。 RefWorks(windows 报价系统)不接受 ANSI 以外的任何其他编码。
在RIS/Refworks导出,激活行
$smarty = iconv("UTF-8", "Windows-1252", $smarty);
示例字符串
Diphosphen-komplexes (CO) 5CrPhPPPhCr(CO) 5
确实突然切断了第一个下标字符(矩形)之后的所有内容。这些字符也未在 HTML 中正确打印,但此输出没问题,因为没有任何内容被切断。在 UTF-8 导出文件编码中,也没有任何内容被截断。尽管如此,Windows 软件无法读取 UTF-8。
最简单的解决方案是将任何下标数字转换为常规数字。那时一切都会很好。但是我找不到任何简单的解决方案。使用十六进制代码是我唯一能想到的。该解决方案也优先用于我们的 Solr 索引。
有人知道更好的解决方案吗?
示例字符串包含Private Use code points如U+E5F8。根据定义,没有标准赋予它们任何意义;它们的使用完全是通过私人协议进行的。因此,在不知道或推断所涉及的私人协议的情况下,不可能将它们转换成任何东西,或用它们做任何事情。一些系统使用专用代码点来表示一些符号,这些符号以某种特殊字体分配给这些点。知道那个字体是什么并检查它可能有助于找出协议。
转换需要以特别的方式单独编码,因为涉及到一个特别的协议。
“ANSI”,这里的意思是windows-1252,不包含任何下标字符。在化学式的上下文中,将下标数字替换为普通数字并没有改变含义,并且公式是可以理解的,虽然看起来不专业。
当转换为 HTML 格式(或其他富文本格式)时,您可以使用普通数字包裹在导致下标呈现的元素中(或以其他方式设置它们的样式)。 HTML 有 sub
元素,但它的实现因浏览器而异,而且质量往往很差,所以更好的方法是生成 <span class=sub>...</span>
并使用 CSS 来设置垂直位置和字体大小。