【问题标题】:Looking for a list of valid characters that can be sent in sms text messages寻找可以在 sms 文本消息中发送的有效字符列表
【发布时间】:2011-03-03 21:21:11
【问题描述】:

我一直在使用 SMS 聚合器的 Web api 来发送和接收文本消息。并非所有字符都是有效的,当我尝试发送带有井号 # 的消息时,它会失败。

我需要在发送之前清理字符串,但我找不到有效的字符列表。 Google 先生帮不上什么忙 - 也许我在寻找错误的条款。

我已经浏览了 api 手册,并通过电子邮件向公司发送了我的问题,但没有答案。

我希望不同的手机可以处理不同的字符列表...例如,iPhone 应该可以处理多种字符,但我的旧诺基亚翻盖手机可能只能处理字母数字以外的几十个字符。我需要最小的公分母。

【问题讨论】:

    标签: sms character


    【解决方案1】:

    这取决于您的聚合器。 Default sms charset 仅限于拉丁文和一些特殊字母(包括井号),其他以 Unicode 或使用锁定移位表机制发送。但是您正在使用 API 来发送消息,因此所有这些东西都被封装了。我建议继续向您的聚合器寻求帮助,他们可能会手动阻止某些字符。

    @ £ $ ¥ è é ù ì ò Ç Ø ø Å å Δ _ Φ Γ Λ Ω Π Ψ Σ Θ Ξ ^ { } \ [ ~ ] | € Æ æ ß É [ ] ! “ # ¤ % & ‘ ( ) * + , – . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? ¡ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ä Ö Ñ Ü § ¿ a b c d e f g h i j k l m n o p q r s t u v w x y z ä ö ñ ü à
    ...还有特殊字符,例如 CR LF FF

    【讨论】:

    • 我有点难过它依赖于聚合器。你会认为它是通用的。谢谢你的链接,我学会了。
    • 技术上它不受聚合器的限制,尽管某些聚合器可能不支持整个 GSM 字符集。 GSM本身定义了03.38标准,只是平台的限制。
    【解决方案2】:

    这完全基于@vissi 的答案,但如果您想在应用程序中构建一个小集合以进行验证,则应该能够插入此内容。

    // Standard Latin Characters
    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
    'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
    'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
    
    // Numbers
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
    
    // Punctuation
    '!', '#', ' ', '"', '%', '&', '\'', '(', ')', '*', ',', '.', '?',
    '+', '-', '/', ';', ':', '<', '=', '>', '¡', '¿', '_', '@',
    
    // Currency
    '$', '£', '¥', '\u00A4', // [UNTYPED] CURRENCY SIGN
    
    // Accented Characters
    'è', 'é', 'ù', 'ì', 'ò', 'Ç', 'Ø', 'ø', 'Æ', 'æ', 'ß', 'É', 'Å',
    'å', 'Ä', 'Ö', 'Ñ', 'Ü', '§', 'ä', 'ö', 'ñ', 'ü', 'à',
    
    // Greek Characters
    '\u0394', // GREEK CAPITAL LETTER DELTA
    '\u03A6', // GREEK CAPITAL LETTER PHI
    '\u0393', // GREEK CAPITAL LETTER GAMMA
    '\u039B', // GREEK CAPITAL LETTER LAMBDA
    '\u03A9', // GREEK CAPITAL LETTER OMEGA
    '\u03A0', // GREEK CAPITAL LETTER PI
    '\u03A8', // GREEK CAPITAL LETTER PSI
    '\u03A3', // GREEK CAPITAL LETTER SIGMA
    '\u0398', // GREEK CAPITAL LETTER OMEGA
    '\u039E', // GREEK CAPITAL LETTER XI
    
    // Other Miscellaneous Characters
    '\u001B', // ESCAPE
        '\n', // NEW LINE or LINE FEED
        '\r'  // CARRIAGE RETURN
    

    【讨论】:

    • 设置双引号 " 而不是单引号 '
    • @CyrilJacquart,要使用的正确引用语法取决于您的编程语言和用例。这个问题与语言无关。
    猜你喜欢
    • 2015-12-31
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    相关资源
    最近更新 更多