mirror of
				https://github.com/sqlmapproject/sqlmap.git
				synced 2025-10-30 15:37:43 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| """
 | |
| Script which takes one or more file paths and reports on their detected
 | |
| encodings
 | |
| 
 | |
| Example::
 | |
| 
 | |
|     % chardetect somefile someotherfile
 | |
|     somefile: windows-1252 with confidence 0.5
 | |
|     someotherfile: ascii with confidence 1.0
 | |
| 
 | |
| If no paths are provided, it takes its input from stdin.
 | |
| 
 | |
| """
 | |
| 
 | |
| from __future__ import absolute_import, print_function, unicode_literals
 | |
| 
 | |
| import argparse
 | |
| import sys
 | |
| from io import open
 | |
| 
 | |
| from chardet import __version__
 | |
| from chardet.universaldetector import UniversalDetector
 | |
| 
 | |
| 
 | |
| def description_of(lines, name='stdin'):
 | |
|     """
 | |
|     Return a string describing the probable encoding of a file or
 | |
|     list of strings.
 | |
| 
 | |
|     :param lines: The lines to get the encoding of.
 | |
|     :type lines: Iterable of bytes
 | |
|     :param name: Name of file or collection of lines
 | |
|     :type name: str
 | |
|     """
 | |
|     u = UniversalDetector()
 | |
|     for line in lines:
 | |
|         u.feed(line)
 | |
|     u.close()
 | |
|     result = u.result
 | |
|     if result['encoding']:
 | |
|         return '{0}: {1} with confidence {2}'.format(name, result['encoding'],
 | |
|                                                      result['confidence'])
 | |
|     else:
 | |
|         return '{0}: no result'.format(name)
 | |
| 
 | |
| 
 | |
| def main(argv=None):
 | |
|     '''
 | |
|     Handles command line arguments and gets things started.
 | |
| 
 | |
|     :param argv: List of arguments, as if specified on the command-line.
 | |
|                  If None, ``sys.argv[1:]`` is used instead.
 | |
|     :type argv: list of str
 | |
|     '''
 | |
|     # Get command line arguments
 | |
|     parser = argparse.ArgumentParser(
 | |
|         description="Takes one or more file paths and reports their detected \
 | |
|                      encodings",
 | |
|         formatter_class=argparse.ArgumentDefaultsHelpFormatter,
 | |
|         conflict_handler='resolve')
 | |
|     parser.add_argument('input',
 | |
|                         help='File whose encoding we would like to determine.',
 | |
|                         type=argparse.FileType('rb'), nargs='*',
 | |
|                         default=[sys.stdin])
 | |
|     parser.add_argument('--version', action='version',
 | |
|                         version='%(prog)s {0}'.format(__version__))
 | |
|     args = parser.parse_args(argv)
 | |
| 
 | |
|     for f in args.input:
 | |
|         if f.isatty():
 | |
|             print("You are running chardetect interactively. Press " +
 | |
|                   "CTRL-D twice at the start of a blank line to signal the " +
 | |
|                   "end of your input. If you want help, run chardetect " +
 | |
|                   "--help\n", file=sys.stderr)
 | |
|         print(description_of(f, f.name))
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 |