| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #---------------------------------------------------------------------  | 
| #  | 
| #---------------------------------------------------------------------  | 
| ##@package DirtyList  | 
| # ´æ´¢½ûÑÔÁÐ±í  | 
| #  | 
| # @author eggxp  | 
| # @date 2010-3-31  | 
| # @version 1.4  | 
| #  | 
| # @change: "2010-10-08 11:05" panwei °Î³ý·þÎñÆ÷°æ±¾¿ØÖÆ´úÂë    | 
| # @change: "2012-05-25 16:00" jiang ×Ö·ûºÏ·¨ÐÔ¼ì²éÔö¼Ó±àÂë¹æÔò¼ì²é    | 
| # @change: "2012-06-28 15:00" jiang ±àÂë¸ñʽé_³öÅäÖà  | 
| # @change: "2012-09-03 10:00" whx ÆÁ±ÎתÒå×Ö·û  | 
| #---------------------------------------------------------------------  | 
| #"""Version = 2012-09-03 10:00"""  | 
| #---------------------------------------------------------------------  | 
| import GameWorld  | 
| import ReadChConfig  | 
| import ShareDefine  | 
| #---------------------------------------------------------------------  | 
|   | 
| #---------------------------------------------------------------------  | 
| ## ÅжÏÊÇ·ñ¿Õ×Ö·û  | 
| #  @param inputText ÊäÈëµÄÎÄ×Ö  | 
| #  @return 0 or 1  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def IsWordForbidden(inputText):  | 
|     if not EncodingToUnicode(inputText):  | 
|         return True  | 
|       | 
|     if "\xe3\x85\xa4" in inputText:  | 
|         GameWorld.Log("´æÔÚ·Ç·¨¿Õ°×Ìî³ä·û!")  | 
|         return True  | 
|       | 
|     #ÆÁ±ÎתÒå×Ö·û  | 
|     for char in ShareDefine.Def_List_EscapeSequence:  | 
|         if char in inputText:  | 
|             return True  | 
|       | 
|     readStrings = ReadChConfig.GetChConfig('DirtyList')  | 
|     readStringsEx = ReadChConfig.GetChConfig('DirtyName')  | 
|     forbiddenText = readStrings.split("\n") + readStringsEx.split("\n")  | 
|       | 
|     for i, eachLine in enumerate(forbiddenText):  | 
|         if len(eachLine) == 0:  | 
|             continue  | 
|           | 
|         #2008.12.21, ²»ÓÃpythonµÄfind, ¸ÄÓÃAnsiPos  | 
|         #³ö´í: ¶ÔÓÚ"Сºì"Ãû×Ö²»ÄÜ×¢²á, ÒòΪ"Сºì" ascIIÖаüº¬½ûÓÃ×Ö·û"¡º", ÔÚµÚÒ»¸ö×ֽں͵ڶþ¸ö×Ö½Ú  | 
|         #D0 A1 BA EC  -->  A1 BA  | 
|         #ËùÒÔ¸ÄÓÃbcbµÄAnsiPos  | 
|         #AnsiPos˵Ã÷:  | 
|         #Note:  This function supports multi-byte character sets (MBCS).  | 
|               | 
|         #if inputText.find(eachLine) >= 0:  | 
|         if GameWorld.GetGameWorld().FindStr(inputText, eachLine):  | 
|             GameWorld.Log("ÆÁ±Î´Ê: i=%s,%s" % (i, eachLine))  | 
|             return True  | 
|       | 
|     return False  | 
|   | 
|   | 
| ## ¼ì²é×Ö·ûµÄ¹æÔòÊÇ·ñ·ûºÏ  | 
| #  @param inputText ÊäÈëµÄÎÄ×Ö  | 
| #  @return: ÊÇ·ñ·ûºÏ±àÂë¸ñʽ  | 
| def EncodingToUnicode(inputText):  | 
|     encodingList = ReadChConfig.GetEvalChConfig("EncodingTex")  | 
|       | 
|     if len(encodingList) != 2:  | 
|         GameWorld.ErrLog("EncodingTex.txt Error len != 2")  | 
|         return False  | 
|       | 
|     if encodingList[0]:  | 
|         #²»z²é  | 
|         return True  | 
|           | 
|     try:  | 
|         unicode(inputText, encodingList[1])  | 
|     except:  | 
|         return False  | 
|       | 
|     return True  |