Unicode字符列表的代码显示与描述

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unicode字符列表的代码显示与描述相关的知识,希望对你有一定的参考价值。

参考技术A

代码 显示 描述
U+0020 空格
U+0021 ! 叹号   U+0022 双引号   U+0023 # 井号   U+0024 $ 价钱/货币符号   U+0025 % 百分比符号   U+0026 & 英文“and”的简写符号   U+0027 ' 引号   U+0028 ( 开 圆括号   U+0029 ) 关 圆括号   U+002A * 星号   U+002B + 加号   U+002C , 逗号   U+002D - 连字号/减号   U+002E . 句号   U+002F / 由右上至左下的斜线   U+0030 0 数字 0   U+0031 1 数字 1   U+0032 2 数字 2   U+0033 3 数字 3   U+0034 4 数字 4   U+0035 5 数字 5   U+0036 6 数字 6   U+0037 7 数字 7   U+0038 8 数字 8   U+0039 9 数字 9   U+003A : 冒号   U+003B ; 分号   U+003C < 小于符号   U+003D = 等于号   U+003E > 大于符号   U+003F ? 问号   U+0040 @ 英文“at”的简写符号   U+0041 A 拉丁字母 A   U+0042 B 拉丁字母 B   U+0043 C 拉丁字母 C   U+0044 D 拉丁字母 D   U+0045 E 拉丁字母 E   U+0046 F 拉丁字母 F   U+0047 G 拉丁字母 G   U+0048 H 拉丁字母 H   U+0049 I 拉丁字母 I   U+004A J 拉丁字母 J   U+004B K 拉丁字母 K   U+004C L 拉丁字母 L   U+004D M 拉丁字母 M   U+004E N 拉丁字母 N   U+004F O 拉丁字母 O   U+0050 P 拉丁字母 P   U+0051 Q 拉丁字母 Q   U+0052 R 拉丁字母 R   U+0053 S 拉丁字母 S   U+0054 T 拉丁字母 T   U+0055 U 拉丁字母 U   U+0056 V 拉丁字母 V   U+0057 W 拉丁字母 W   U+0058 X 拉丁字母 X   U+0059 Y 拉丁字母 Y   U+005A Z 拉丁字母 Z   U+005B [ 开 方括号   U+005C \\ 由左上至右下的斜线   U+005D ] 关 方括号   U+005E ^ 抑扬(重音)符号   U+005F _ 底线   U+0060 ` 重音符   U+0061 a 拉丁字母 a   U+0062 b 拉丁字母 b   U+0063 c 拉丁字母 c   U+0064 d 拉丁字母 d   U+0065 e 拉丁字母 e   U+0066 f 拉丁字母 f   U+0067 g 拉丁字母 g   U+0068 h 拉丁字母 h   U+0069 i 拉丁字母 i   U+006A j 拉丁字母 j   U+006B k 拉丁字母 k   U+006C l 拉丁字母 l(L的小写)   U+006D m 拉丁字母 m   U+006E n 拉丁字母 n   U+006F o 拉丁字母 o   U+0070 p 拉丁字母 p   U+0071 q 拉丁字母 q   U+0072 r 拉丁字母 r   U+0073 s 拉丁字母 s   U+0074 t 拉丁字母 t   U+0075 u 拉丁字母 u   U+0076 v 拉丁字母 v   U+0077 w 拉丁字母 w   U+0078 x 拉丁字母 x   U+0079 y 拉丁字母 y   U+007A z 拉丁字母 z   U+007B 开 卷曲括号   U+007C | 直棒   U+007D 关 卷曲括号   U+007E ~ 波浪纹

Unicode 字符与 TextView 中的文本大小不同

【中文标题】Unicode 字符与 TextView 中的文本大小不同【英文标题】:Unicode character not same size as text in TextView 【发布时间】:2021-03-12 20:27:54 【问题描述】:

我试图在 TextView 中显示一个箭头 unicode 符号,但由于某种原因,该字符与使用 Html.fromHtml 代码的文本站点的大小不匹配。有什么办法可以解决这个问题吗?

活动布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/myTV"
        android:layout_
        android:layout_
        android:textAppearance="?android:textAppearanceLarge"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

活动类

class MainActivity : AppCompatActivity() 
    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val mTV = findViewById<TextView>(R.id.myTV)

        mTV.text = Html.fromHtml(getString(R.string.app_name) + " \u2192 " + getString(R.string.app_name), Html.FROM_HTML_MODE_COMPACT)
    

【问题讨论】:

Why is TextView showing the unicode right arrow (\u2192) at the bottom line? @Onik 尝试在多行上执行相同操作时,这不起作用 【参考方案1】:

Roboto(系统字体)doesn't have arrow glyphs,所以您看到的是某种呃-哦后备,您似乎无法设置样式(包括通过 HTML 字符串中的样式标签) .所以你可以做的就是在其中粘贴一个&lt;img&gt; 标签,使用ImageGetter 为其提供可绘制对象

class MainActivity : AppCompatActivity() 
    @RequiresApi(Build.VERSION_CODES.N)
    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val mTV = findViewById<TextView>(R.id.myTV)
        val appName = getString(R.string.app_name)
        val template = "$appName <img src=\"arrow\"/> $appName"
        mTV.text = Html.fromHtml(template, Html.FROM_HTML_MODE_COMPACT, imageGetter, null)
    

    private val imageGetter = Html.ImageGetter  name ->
        val resId = when (name) 
            "arrow" -> R.drawable.ic_baseline_arrow_right_alt_24
            else -> throw IllegalArgumentException("what the heck is $name")
        

        ResourcesCompat.getDrawable(resources, resId, theme)?.apply 
            // size the arrow here - we need to scale it with the font size,
            // so set its width and height in the XML to sp units
            setBounds(0, 0, intrinsicWidth, intrinsicHeight)
        
    

所以这基本上是使用img标签中的src属性的值并将其传递给imageGetter,这只是对可绘制资源ID的简单映射。

然后它加载并调整可绘制对象的大小——它需要缩放到等效的sp 值,因此它会随着文本大小进行缩放。将其设置在可绘制对象中是最简单的,您可以调整这些值以使其相对于文本大小合适:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:
    android:
    android:viewportWidth="24"
    android:viewportHeight="24"
    android:tint="?attr/colorOnSurface">
  <path
      android:fillColor="@android:color/white"
      android:pathData="M16.01,11H4v2h12.01v3L20,12l-3.99,-4z"/>
</vector>

这只是baseline_arrow_right drawable,您可以从资源管理器中的矢量资产中获得。注意widthheightsp而不是dp,否则它不会随系统字体大小缩放。

您还需要确保它的主题正确,我将颜色设置为colorOnSurface,但您可以自己解决!有 ?android:attr/textColor,但您可能需要将图像设置为 enabled 才能使其看起来正确

【讨论】:

澄清一下,如果android:fillColor="@android:color/white" 不存在会怎样? 据我所知,它只是将路径定义为有填充,所以它是一个实心形状 - 还有一个 strokeColor 一个,如果你没有,它可能不会显示,因为路径上没有任何东西被绘制。但这就是导入矢量资产时 XML 的外观,我只是更改了色调和尺寸

以上是关于Unicode字符列表的代码显示与描述的主要内容,如果未能解决你的问题,请参考以下文章

Unicode与UTF8相互转化(使用MultiByteToWideChar)

检查模板中字符串的 unicode 列表

如何修改 unicode 代码,因为它是一个字符串

如何使用 Apache fop 显示 Unicode 字符?显示“?”而不是性格。

Unicode字符列表的Unicode 编码表

将列表 unicode 值的 rdd 列表转换为字符串