掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1872|回复: 3

[使用求助] AHK鼠标取词,ASCII编码如何判断中文?

[复制链接]
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

    发表于 2020-2-26 15:27:38 | 显示全部楼层 |阅读模式
    本帖最后由 VimVim 于 2020-2-26 15:48 编辑 8 T: G6 i. n1 ~$ m9 E

    % u! O! o4 ~3 P) y) A" Q: o[9.15]GoldenDict & 欧路 取词完美版(AHK)7 E" [1 V" K/ E- F0 l
    https://www.pdawiki.com/forum/thread-23696-1-1.html5 z5 B: ?: L2 ^
    (出处: 掌上百科 - PDAWIKI)1 o# ^# `: ]  q1 [! m: H" T
    4 [$ D* s% Q2 u; {; x3 c7 r6 k; w4 g
    @garypang
    ! K8 p/ F& B( U* v/ B# g) z0 D  K
    1、其中的代码使用 ASCII 编码实现对中文/数字/字符的取词屏蔽,但我需要中文取词,请问如何设置是合理的?
    % Q. e: z! g' U6 S" Bor code > 127 ; 将这一行屏蔽就可以使用中文了吗?
    % X4 H- @' k' d' A注:原始代码中是code > 122,但与or code >= 123 and code <= 126 重叠,而且127不可显示,所以将其更改为code > 127,逻辑上显得更合理
    4 @1 L1 B5 Z' o/ N
    6 v1 ~1 \0 g, v+ C5 J  {) ~- \
    2、为什么第一行使用code < 20 ,而不是 code <= 31?或者干脆不写,反正都看不见。2 p& c4 W) H) Q  Z4 t2 }" E
    我查阅了 https://zh.wikipedia.org/wiki/ASCII ,应该 31及之前都没有意义啊,是因为跟 中文 有关吗?
    $ Y9 w9 s  M  R$ ~; V0 d
    - x! Q2 a, e. f
    1.     len := strlen(clipboard)0 L( v/ m+ q) u6 ]& k) Z
    2.     index := 1
      $ }9 ]& O" w/ ]( t( E0 [1 x
    3.     loop {
      , b' ~% q: y  a+ s, k- K" y
    4.         ; 剪贴板里不能包含(中文)/数字/特殊字符
      0 }- `/ X9 U2 O- a3 L
    5.         ; 5 w* l+ S3 z6 Q/ K  x5 d/ E' b7 W
    6.         code := asc( substr(clipboard, index, 1) ). T% U: t$ u" A# E  a1 x+ g
    7.         if( code < 20
      9 w# o% |9 q: \
    8.             or code >= 33 and code <= 38+ C3 l4 k; j) B1 B+ I' u8 O
    9.             or code >= 40 and code <= 443 a5 u% R( U& q- O* s& ^
    10.             or code >= 46 and code <= 64
      8 e+ \3 Q" {  p: A1 k4 ?; {
    11.             or code >= 91 and code <= 96
      0 e# F3 d! b3 j* T5 ]  U) J9 i
    12.             or code > 127  ; 将这一行屏蔽就可以使用中文了吗?4 ?+ H$ B% q# Q$ T9 ?
    13.             or code >= 123 and code <= 126 ) {" m* c9 d: W. Z: A( T3 w
    14.             Clipboard := oldClipboard# P" F6 J/ i! ]* G# N9 _$ Z
    15.             return1 K$ c5 n( C* x( y) k8 U* a7 ?0 m
    16.         }) S! E/ L0 X8 N1 C, Y3 {0 V& ]
    17.         ++index
      ' k+ e8 J6 M- V5 b1 ]% P: N( S
    18.         if(index > len)) Z! T. @" Q( I; }; c3 x
    19.             break! R' L$ I2 @8 N& ~  _7 U
    20.     }
      8 s& [6 X6 s; B& d3 ~
    复制代码

    & S" k% C8 Q: @6 y# n  q1 q: X8 U/ p& o( A) U# T1 w
    5 h* l/ _9 c$ f1 a1 q- v; T% X
  • TA的每日心情
    慵懒
    2025-1-28 16:22
  • 签到天数: 216 天

    [LV.7]常住居民III

    发表于 2020-3-16 08:39:58 | 显示全部楼层
    本帖最后由 deeke 于 2020-3-16 08:43 编辑
    ( j+ `  H4 a( P2 j8 c( L2 k8 N
    5 J) v! Q( s. D% Z3 ]5 }. f+ [1. 试试 MsgBox % SubStr("123abc我在哪儿789", 7, 1); 应该显示 "我"。
    0 r3 ^! S/ ~; C9 e: W6 V9 b! ~7 Q8 ~( y/ W9 u" \7 c
    2. Asc() returns a numeric value in the range 0 to 255 (for ANSI) or 0 to 0xFFFF (for Unicode).
    4 ~4 g& _: Z9 t. V" b0 D. Q8 I试试 MsgBox, % Asc("我");
    ( B/ F# w% c/ `' B: e$ Z2 m: P% ~% h1 f7 `6 K" F2 L4 d4 _6 X
    3. Ord() returns a numeric value in the range 0 to 255 (for ANSI) or 0 to 0xFFFF (for Unicode) or 0x10000 to 0x10FFFF (for the corresponding Unicode character).
    4 p6 U& `0 r$ nApart from the Unicode supplementary character detection, Ord() is identical to Asc().: ]* O- {6 P; |5 z+ c/ {
    试试 MsgBox, % Ord("我") ;* s6 x1 j/ @# i9 S! d8 v: j

    0 U* b5 X$ t& _4 I% S4. "code > 127" 表示所有的编码后超过1字节的字符,比如希腊字母、中日韩文字。
  • TA的每日心情
    无聊
    2022-9-19 16:00
  • 签到天数: 209 天

    [LV.7]常住居民III

    发表于 2020-3-8 03:24:26 | 显示全部楼层
    直接在这一段前面加;不就可以了?
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

     楼主| 发表于 2020-3-8 09:37:52 | 显示全部楼层
    elisir 发表于 2020-3-8 03:24
    ; j3 z; h0 j" W, m( e  e: k( b直接在这一段前面加;不就可以了?

    # F9 K( Q( Y1 k1 x6 T* Q感谢回复!但我的问题不是如何注释代码,而是我不知道注释的目标是否正确。
    : e: c! O) d5 Z0 p7 i5 e# m8 D! [- [1 u0 e' Y/ ], ^5 N
    我的问题如果拆开来看:; Y4 V6 B- E' v1 ]$ m
    1、"code > 127" 是否就是代表中文?
    . _) p! h1 O  R: p' d# l( p9 q2、还是"code > 127"除了代表中文,还有其他含义?若屏蔽是否会出现副作用?
    * i- A1 B" l3 S" s/ M$ M0 z3、还是中文不仅仅需要"code > 127",还需要其他,具体是?
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-10 01:17 , Processed in 0.021071 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表