HarmonyOS 鸿蒙Next TextInput的text属性包含“�”时,输入框内容被异常清空

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next TextInput的text属性包含“�”时,输入框内容被异常清空

Demo:

TextInput({
text: $$this.nickname
}) // … 此处省略其他配置 
.onChange((value: string) => {
let newValue = value;
if (value !== undefined && value.length > 6) {
// … 此处省略其他业务 
newValue = value.substring(0, 6);
}
this.nickname = newValue;
})<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

输入框显示输入最多6个字符,超过6个字符时需要toast提示。 问题触发:输入框输入“11111”,再输入一个emoji表情,超过6个字符emoji被截断,newValue = “11111�”。预期输入框显示“11111�”,但输入框实际表现为被清空了。


更多关于HarmonyOS 鸿蒙Next TextInput的text属性包含“�”时,输入框内容被异常清空的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
  [@State](/user/State) private inputText: string = ""
  [@Prop](/user/Prop) [@Watch](/user/Watch)('onTextUpdated') text: string = ""
  public maxLength: number = 6
  onTextUpdated() {
    this.inputText = this.sliceTools(this.text, this.maxLength)
  }
  sliceTools(str: string, maxLength: number): string {
    let res = "";
    for (const element of str) {
      console.info('输入:' + element)
      if (res.length < maxLength) {
        res = res + element
      }
    }
    return res;
  }
  build() {
    Column() {
      TextInput({ text: $$this.inputText })
        .onChange((value: string)=> {
          this.text = value
        })
    }
  }
}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

更多关于HarmonyOS 鸿蒙Next TextInput的text属性包含“�”时,输入框内容被异常清空的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙系统中,Next TextInput组件的text属性在包含特殊字符“�”(即Unicode中的替换字符,通常表示字符编码错误或无法识别)时,输入框内容被异常清空的问题,可能是由于系统对非法字符的过滤处理机制导致。

为了解决这个问题,可以尝试以下步骤:

  1. 检查字符源:确保输入到TextInput的字符串中不包含无法识别的字符编码。这通常发生在字符串从外部源(如网络、文件等)读取时,字符编码没有正确处理。

  2. 预处理字符串:在将字符串设置到TextInput的text属性之前,使用字符串处理函数(如正则表达式替换)来移除或替换这些特殊字符。

  3. 更新组件:确保你使用的HarmonyOS SDK和Next组件库是最新版本,因为新版本可能已经修复了这类问题。

  4. 错误处理:在代码中添加错误处理逻辑,当检测到包含特殊字符时,给出用户友好的提示,而不是直接清空输入框。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部